编译构建环境
-
ubuntu 8.10 (32-bit x86)
-
jdk 5.0 当前android 版本需要在5.0环境下编译,java6目前不支持。原因是在生成javadoc的时候某些标记不兼容导致编译失败。
-
gcc ,g(plugs plugs) libc6-dev python (ubuntu默认已经提供)
-
10G以上的磁盘空间及1G以上内存。
构建编译
1. 使用apt-get 安装所需软件
sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
2. 安装repo同步工具
cd ~ mkdir bin cd bin curl http://android.git.kernel.org/repo >~/bin/repo chmod a+x ~/bin/repo
3. 创建源码工作目录
cd ~ mkdir android cd android
4.初始化工作空间
cd ~ android ../bin/repo init -u git://android.git.kernel.org/platform/manifest.git
完成目录初始化的工作将开到以下的信息提示:
repo initialized in /mydroid
注:当前使用repo命令同步源码库的android主干版本,如果需要同步其他分支版本需要使用 -b 参数 如以下示例
../bin/repo init -u git://android.git.kernel.org/platform/manifest.git -b cupcake
同步版本标记为cupcake 的版本
5. 开始从android源码库同步源码,源码大概2个G左右同步时间取决于网速
../bin/repo sync
6. 编译前的准备工作 设置环境变量
编辑 .bashrc 文件加入以下环节变量
PATH=$PATH:~/android/bin JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun ANDROID_PRODUCT_OUT=~/android/out/target/product/generic ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT}:~/eclipse export PATH JAVA_HOME ANDROID_PRODUCT_OUT
使环境变量生效
cd ~ source .bashrc
7. 编译构建
执行make进行编译,这个过程也比较耗时需耐心等待。
cd ~ android make
编译完成后会在$ANDROID_PRODUCT_OUT 目录生成 ramdisk.img、system.img、userdata.img 三映像文件,模拟器或真实设备运行需要这3个映像文件。
启动模拟器
emulator
如果看到模拟器的界面正常显示,说明这次基本构建已经完成。
创建SDK
在构建编译成功后可以继续构建android sdk 开发包。网上的文档基本上说通过make sdk 命令即可完成sdk的生成,经过我的测试这样直接生成的sdk并不能正常使用而是通过以下步骤完成sdk的构建。
cd ~ android . build/envsetup.sh lunch sdk-eng make sdk
编译部署指定的模块
如果我们需要编译部署单独的一个模块可以通过”mmm” 命令实现,如下示例编译部署浏览器模块。
cd ~ android . build/envsetup.sh mmm packages/apps/Browser/
注:mmm 命令必须在运用 envsetup.sh 后使用
在重新编译了更新的模块后如我们在模拟器环境下测试需要重新生成system.img 使用以下命令重新生成system.img (这个过程会比使用make快一些)
make snod
Ubuntu 9.10编译时问题收集
1.找不到PRODUCT_POLICY
frameworks/policies/base/PolicyConfig.mk:22: *** No module defined for the given PRODUCT_POLICY (android.policy_phone).
解法: 修改build/tools/findleaves.sh的89行:
#find "${@:0:$nargs}" $findargs -type f -name "$filename" -print | find "${@:1:$nargs-1}" $findargs -type f -name "$filename" -print |
2. fprintf未定义
frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in this scope
解法:
apt-get install gcc-4.3 g++-4.3, cd /usr/bin rm /usr/bin/gcc rm /usr/bin/g++ ln -s gcc gcc-4.3 ln -s g++ g++-4.3
3.安装sun- java6-jdk,并且在环境变量中设置:
export JAVA_HOME=/usr/lib/jvm/java-6-sun/ export ANDROID_JAVA_HOME=$JAVA_HOME
参考资料
http://source.android.com/download
http://embeddeder.spaces.live.com/Blog/cns!8006E36532087D51!213.entry
Android 4.0 Cream Sandwich(ICS) 编译构建环境
-
Ubuntu 10.04
-
Python 2.4 – 2.7
-
JDK 6
-
Git 1.7 或者更高版本
64位系统:
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
On Ubuntu 10.10: $ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
On Ubuntu 11.10: $ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
32-bit (experimental)
$ sudo apt-get install git-core gnupg flex bison gperf build-essential \ zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev \ libx11-dev libreadline6-dev libgl1-mesa-dev tofrodos python-markdown \ libxml2-utils