1. 下载安装64位ubuntu11.10。



/etc/gdm/gdm.schemas文件中的:

<default>bin,root,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,nobody4,noaccess,postgres,pvm,rpm,nfsnobody,pcap</default>


去掉root用户名,然后就可以root登录了。



3. http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html下载jdk-6u41-linux-x64.bin,复制到虚拟机中。



4. 执行./jdk-6u41-linux-x64.bin安装jdk,然后配置/etc/profile文件如下:


export JAVA_HOME=/usr/local/java/jdk1.6.0_41



export JRE_HOME=/usr/local/java/jdk1.6.0_41/jre



export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH



export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH


执行source /etc/profile使配置生效。



5. 执行下面的命令安装程序:


$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
  x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc


1)需要软件源设置为main server,不然有些git-core包找不到。


2)ia32-libs安装不了,用ia32-libs-multiarch:i386代替,不知道行不行。


3)lib32readline5-dev装不了,安装lib32readline-gplv2-dev代替。


执行:


sudo apt-get install libx11-dev:i386



6. 设置ccache:


打开用户目录下的.bashrc文件,在最后加上:


export USE_CCACHE=1


export CCACHE_DIR=~/.ccache


目录~/.ccache是默认保存的地方。


编译前要在android目录执行命令:


prebuilts/misc/linux-x86/ccache/ccache -M 50G


4.0已经一下版本执行:


prebuilt/linux-x86/ccache/ccache -M 50G



7. gcc版本问题,需要降为4.4:


apt-get install gcc-4.4


apt-get install g++-4.4


到/usr/bin目录下查看gcc的连接情况:


ls -l gcc*


然后备份和修改连接:


mv gcc gcc.bak


ln -s gcc-4.4 gcc


gcc -v 


g++和gcc执行同样的操作。


最后还需要安装:


apt-get install g++-4.4-multilib


apt-get install libc6-dev-i386



8. 完成后检查一下包是否都安装完成:


$ sudo apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs-multiarch:i386 \
  x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev \
  libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
  libxml2-utils xsltproc libx11-dev:i386 gcc-4.4 g++-4.4 g++-4.4-multilib libc6-dev-i386


 


9. 建立文件夹,并包含到path中:


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


下载Repo脚本:


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



$ chmod a+x ~/bin/repo


创建一个目录,然后给权限:


mkdir android42


chmod -R 777 android42/


cd android42


初始化分支,在https://android.googlesource.com/platform/manifest/+refs


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



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



10. 编辑/etc/hosts文件


增加下面内容,保存


74.125.31.82 www.googlesource.com


74.125.31.82 android.googlesource.com


203.208.46.172 cache.pack.google.com


59.24.3.173 cache.pack.google.com



11.开始下载吧:


$ repo sync


如果下载中断,按ctrl+z,然后重新执行上面的命令。



12. 下载完成了,我们设置一下ccache。


prebuilts/misc/linux-x86/ccache/ccache -M 50G



13. 执行初始化脚本:


$ . build/envsetup.sh


选择编译目标:


$ lunch full-eng


full是所以app、输入法等,eng是针对开发者的权限



14. 为了保证能成功编译,我们修改一下swap分区的大小。


free -m 


以M为单位查看swap的大小。


mkdir swap


cd swap


dd if=/dev/zero of=swapfile bs=1024 count=2000000


创建一个2g的分区


mkswap swapfile


swapon swapfile


转化并激活swap分区文件。要每次开机都生效,需要修改/etc/fstab文件,添加:


/root/swap/swapfile swap swap defaults 0 0


取消分区要执行:


swapoff swapfile



15. 开始编译吧:


make -j4



16. 中途没有出错,编译完成!下面设置环境变量:


gedit ~/.bashrc


添加:


export ANDROID_PRODUCT_OUT=/root/android42/out/target/product/generic 
 
 
 

   export ANDROID_PRODUCT_OUT_BIN=/root/android42/out/host/linux-x86/bin 
 
 
 

   export ANDROID_SWT=/root/android42/out/host/linux-x86/framework 
 
 
 

   export PATH=$PATH:$ANDROID_PRODUCT_OUT_BIN


执行(其实上面这个环境变量不需要设置也可以):source ~/.bashrc


. build/envsetup.sh


emulator


就可以启动模拟器了



17. 编译sdk。


. build/envsetup.sh


lunch sdk-eng


make sdk



18. 创建avd。


注释16步的添加,在.bashrc文件中添加:


export PATH=$PATH:/root/android42/out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86/tools


执行:


source ~/.bashrc 

 

  android list 

 

  android create avd -n avd42 -t 1 两次回车 

 

  emulator -avd avd42


出现Failed to load libGL.so错误,执行下面语句:


ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so


模拟器还会报出警告: emulator window was out of view and was recentred



我们可以通过-scale ­­选项来解决这个问题,使用emulator -avd avdname -scale 0.9