Compile android source and kernel for emulator in Debian

  1、download the android source code

  Reference from

http://source.android.com/source/downloading.html

  follow the reference:

  Create the dir and export the PATH

$ mkdir ~/bin
$ PATH=~/bin:$PATH

  Download the repo

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod 775 ~/bin/repo

  Repo init the code version you want

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

  finally sync the codes

$ repo sync
// better way
$ repo sync -j16

  if try to stop the repo, just try

Ctrl + z   

  and continue the repo

$ repo sync 
// or 
$ repo sync -j16

  after download, must enter "repo sync" to check the code again.

  2、download the kernel

  Reference from

https://android.googlesource.com/

  click the kernel/common, there would be a instruction on the top:

git clone https://android.googlesource.com/kernel/common

  the version for emulator

git clone https://android.googlesource.com/kernel/goldfish

  3、Compile the source code

  1) check the build environment

http://source.android.com/source/initializing.html

  2) compile

$ cd ~/Android/source_code/
$ make
// or 
$ make -j4

  3) there would be the files in the following dir

$ ls out/host/linux-x86/bin/ | grep emulator
emulator
emulator64-arm
emulator64-mips
emulator64-x86
emulator-arm
emulator-mips
emulator_renderer
emulator-ui
emulator-x86
$ ls out/target/product/generic/ | grep img
ramdisk.img
system.img
userdata.img

  4、 Compile the kernel

$ cd goldfish/
$ ls

  but there is no files now.

  checkout for the real codes.

$ git checkout 
android-goldfish-2.6.29          master                           origin/linux-goldfish-3.0-wip 
android-goldfish-3.4             origin/android-goldfish-2.6.29   origin/master 
HEAD                             origin/android-goldfish-3.4      
linux-goldfish-3.0-wip           origin/HEAD           

  choose the version you want

$ git checkout android-goldfish-2.6.29 
Checking out files: 100% (26821/26821), done.
Branch android-goldfish-2.6.29 set up to track remote branch android-goldfish-2.6.29 from origin.
切换到一个新分支 'android-goldfish-2.6.29'

  then

$ ls
arch     CREDITS        drivers   include  Kbuild  MAINTAINERS  net             samples   sound
block    crypto         firmware  init     kernel  Makefile     README          scripts   usr
COPYING  Documentation  fs        ipc      lib     mm           REPORTING-BUGS  security  virt

  compile the kernel

  1) crrect the Mafile

$ vim Makefile
//correct the following messenge
#ARCH           ?= $(SUBARCH)
ARCH            ?= arm
CROSS_COMPILE   ?= arm-none-linux-gnueabi-

  2) make menuconfig

$ make menuconfig
>> Save an Alternate Configuration File       

  3) make

  TIPS : there would be error without libnucurses

$ sudo apt-get install libncurses5 libncurses5-dev
// in AMD64
$ sudo apt-get install libncurses5 libncurses5-dev
$ sudo apt-get install ia32-libs 
$ sudo apt-get install lib32ncurses5 lib32ncurses5-dev