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