By this point, you’ve either already gotten your hands dirty trying a few things here and there or you’re very eager to actually play with a live Android system. As with any embedded system you are bringing up, your typical goal would be to get to a minimally functional system and then start adding support for more and more hardware and functionality until your requirements are met.
Obviously, to get a minimally functional Android system, you’ll first need to bring the kernel up on your board. As I mentioned earlier, the best way to get yourself an Android-compatible kernel is to talk to your SoC vendor; kernel porting and board bringup being somewhat outside the scope of this book. However, once you’ve got yourself a minimally functional kernel, the first Android component you’ll have to deal with is its native user-space.
As described in Chapter 2, this foundation serves as the hosting environment for all the upper layers of the Android stack, including the Dalvik virtual machine and the services and apps it runs. This is also where a part of Android’s hardware support is implemented. Now is therefore a good time to take a closer look at Android’s native user environment. If nothing else, it’s sufficiently different from what is found in most classic embedded Linux systems to warrant a separate discussion.