Ubuntu12.04编译,运行模拟器

【参考链接】

Ubuntu12.0464位下,下载编译Android2.3源码

http://blog.163.com/zhou_411424/blog/static/1973621562012810631356/

自己动手编译Android源码(超详细)

http://www.jianshu.com/p/367f0886e62b

 

1.      

编译android-2.3.3需要使用gcc-4.4版本,先查看当前系统自带的GCC的版本,默认是4.6.3

gcc –v

Ubuntu12.04编译,运行模拟器

故要先进行降级

apt-get install gcc-4.4

apt-get install g++-4.4

cd /usr/bin

mv gcc gcc-4.6.3.bak

ln -s gcc-4.4 gcc

mv g++ g++-4.6.bak

ln -s g++-4.4 g++

再查看gccg++版本号:

gcc -v

g++ -v

 均显示4.4说明安装成功

 

2.      

然后还至少需安装如下软件

apt-get update

apt-get install

git-core gnupg flex bison gperf libsdl1.2-devlibesd0-dev libwxgtk2.6-dev

build-essential zip curl libncurses5-dev:i386zlib1g-dev x11proto-core-dev

libx11-dev libgl1-mesa-dev g++-multilib mingw32tofrodos python-markdown

libxml2-utils libgl1-mesa-dev tofrodos xsltproclibc6-dev-i386 g++-multilib

libreadline6-dev lib32readline6-dev ia32-libslib32stdc++6 lib32z1-dev

 

3.      

编辑frameworks/base/libs/utils/Android.mk文件,修改

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

在最后增加 -fpermissive(注意是短线)

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)-fpermissive

 

4.      

使命令行支持后续要使用的make指令,修改~/.bashrc,在最后添加下行

source /root/android-2.3.3_r1/build/envsetup.sh

关闭文件以后进行更新

source ~/.bashrc

5.      

开始编译

cd ~/android-2.3.3_r1

lunch full-eng
make

 

在编译的过程中可能会出现问题(基本上都是因为软件未安装),这个时候可以使用日志中如下样式的关键字去网上找解决办法

Ubuntu12.04编译,运行模拟器

 

贴上我遇到的问题

hostExecutable: acp (out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp)

g++:selected multilib '32' not installed

make:*** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] Error 1

解决方法

apt-get install g++-4.4-multilib

 

collect2:ld returned 1 exit status

make:*** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

解决方法

apt-get install lib32z1-dev

 

6.      

编译完成

Ubuntu12.04编译,运行模拟器

 

编译完成以后,会在/out/target/product/generic目录下生成3image文件

system.imgramdisk.imguserdata.img

Ubuntu12.04编译,运行模拟器

 

7.      

继续修改~/.bashrc,添加如下

PATH=$PATH:~/android-2.3.3_r1/out/host/linux-x86/bin

exportANDROID_PRODUCT_OUT=~/android-2.3.3_r1/out/target/product/generic

更新

source ~/.bashrc

 

8.      

启动模拟器

emulator

Ubuntu12.04编译,运行模拟器

 

在后续过程中,如果修改了源代码,可以通过

make systemimage

make userdataimage

make ramdisk

重新生成映像文件,再运行模拟器。

(网上也有资料说make snod可以快速编译,但是我这里实验的不行)