Archive

Archive for February, 2012

Setting up an Android Build

February 13, 2012 Leave a comment

Yes, it has been too long since I blogged, I won’t bore you with the details of why.  Instead, I’ll kick this off again with a step-by-step post on how to set up a system to do your first Android build.

Linaro has a great new Android homepage with lots of useful links on it, go explore the info there http://wiki.linaro.org/Platform/Android

I did my installation on Ubuntu 11.10 Oneiric, so this post will make the most sense if you do too.  Put away that P3 box in the corner you were planning on using.  It seems to be a wise requirement to use a quick box with x86_64 support. You will also need ~30G of free space on your drive an a good amount of memory, plan for it. So, go do your AMD64 install of Ubuntu Oneiric desktop and then come back.

The AOSP “Initializing a Build Environment” page is your next stop. It is slightly out of date, but work through it  http://source.android.com/source/initializing.html  Under the “Installing required packages” section, there is a package change for Oneiric. The package lib32readline5-dev is not available, use lib32readline-gplv2-dev instead.

Next, go get repo.  To do this, follow the first 3 steps under the Quickstart section at http://wiki.linaro.org/Platform/Android/BuildSource  Wait on running the repo init command for now.

Install gcc-4.5. I used software center, and uninstalled 4.6 first. You may not have to do this as it may have caused me some extra fun for me. Regardless, when you have it installed, make sure that you have /usr/bin/cc and /usr/bin/gcc symlinked to gcc-4.5, not 4.6.

I also experienced a problem that was well documented here: http://unforgivendevelopment.com/2011/10/05/solved-cyanogenmod-build-issues-on-debian-wheezy-testing/  As this post suggests, running “sudo ln -s /usr/include/`uname -m`-linux-gnu/asm/ /usr/include/asm” fixed the problem.

Now it is time to decide on the code to build.  I was interested in reproducing the 12.01 Linaro Android “tracking” build because it had the patches needed to make audio work on the Pandaboard. The best way to do this is to follow the “How to Get and Build the Source” on the android-build.linaro.org page for the build you are interested in, in my case, https://android-build.linaro.org/builds/~linaro-android/tracking-panda-12.01-release/  If you follow this exactly (with any changes for your environment, of course), you shouldn’t have any problems. Also, I hope you aren’t in a hurry. The repo sync alone will take over an hour unless you have a super fast connection and the build will depend on your host, but mine takes a good long time.

When the build is complete, check the build log in the root directory to make sure there wasn’t any issues. To use the build you just made, refer to the instructions “How to Use Prebuilt Images” on the same Linaro Build page you used in the step above. The boot, system and userdata compressed tarballs are available in the ~/android/out/target/product/<board> directory. Substitute <board> with your dev platform, in my case that was “pandaboard”. Blast these onto a SD card just like you’d do with the prebuilt images and you’ll be up an running on your own Android build.

That’s all there is to it. Hope this helps, I tried to capture everything that I went through to get it working. Please let me know if you find any omissions or problems so that I can edit this post with any corrections.