[Galaxy S Plus I9001 Android Development] skywalker01:
Hi broodplank,

sorry to hear that your AOSP efforts still didn't were successful.

Unfortunately I'm not sure if I can help you there at all because I never tried to compile (vanilla) AOSP source and especially not ICS or even JB.

I'm still "obsessed" with GB you know, otherwise SkyHigh V1.5 wouldn't have made sense in the first place.

But I will try to give you some general advice anyway and some speculation what could be wrong as well:

Do you already know the general layer architecture of Android ? I.e. the Linux kernel is the base (bottom layer) with the hardware Linux drivers. Android is just a GUI like KDE or Gnome that runs on top of the Linux kernel and is especially designed for small mobile devices with small displays.

But UNLIKE any common Linux distribution software installation and execution is completely different:

all apps (=applications/software that any user can install without rooting) have to be programmed in Java and are executed by a Java engine. You probably know the Microsoft Java VM in Windows and the Oracle JRE (formerly Sun JRE) in Windows and Linux ?

None of these is included in Android because Google (=author of Android system) decided to develop an own Java engine.

This Java engine is called dalvik engine and it compiles and runs the precompiled Java apps which are executed on the top layer of Android.

Why am I telling you all this ? There is a very important fact that you have to understand to be able to compile and modify AOSP sources which is directly related to this layer architecture:

the Android framework (also written in Java !!!) and the dalvik engine (top layer) are NOT able to directly communicate with the Linux layer (bottom layer). Which also means that no app can directly address the kernel and any hardware. Knowing this already explains why Android apps are mostly hardware independent (there are some exceptions of course) and why AOSP apps (also written in Java !) will run independent of kernel and hardware.

But of course the top layer must use the hardware to work and this is impossible without the kernel drivers. So what is the solution ?

Simple, there is a linking layer in between that handles all hardware requests between the Java powered top layer and the Linux kernel bottom layer. This intermediate layer are the Android libraries which you usually find in /system/lib and have the ending .so

So these libraries are highly hardware dependent and even Linux driver version dependent !

And the source code of most of these libraries is located in the /external and /hardware folders of the source tree, exactly two of the folders you have trouble with ;)

The reason for that is simple again: the vanilla sources of Google's AOSP code only supports a certain number of common standard hardware and all manufacturers modify these libraries to work with their specific hardware. But the source code of these manufacturer specific libraries is copyrighted closed source and usually not available to public. The manufacturers only provide the compiled .so-libraries in their ROMs, not the AOSP source files.

This layer model is of course a very simplified version of the actual layer structure you can find on Google's developer pages. But I hope it helps to understand the general layer architecture of operating systems. For instance you already know another layer which lies even below the kernel, that's the BIOS ;)

The basic principle of the layer architecture is that every layer can only communicate to a layer directly above or below (if these exist) and NOT to ANY layer 2 or more levels beyond.

If you have understood everything above it must now seem that it is theoretically impossible to run AOSP on a non-standard Android device (i.e. anything else than a Nexus).

Of course there are other devices with running AOSP (based) ROMs so there must also be solutions. Just look at CM how they do it. There are actually two possible methods, do you know them or can you guess what to do ?

Sorry, but I have to take a break now. If I didn't tell you something new here just tell me, otherwise I will continue at this point probably sometime tomorrow.