最近一直在看android源码相关的文档,包括编译源码,还有framework层的代码,本人很懒,一直没有写博客,今天想本身在编译一下源码,而且运行在模拟器中。linux
源码的版本不一样,须要的jdk可能也有所不一样,一切都参照官方给与的文档,下载源码的方法也参考官方文档。android
注意点:1.环境变量要设置正确,不要出现错误api
2.基本没有一次就能顺利编译源码的,多少都会出错,根据提示修改错误,安装一些包和库就能够搞定,具体问题具体查找,我遇到的问题也可多了,都是按官方文档解决的。有些问题可能和你的编译环境相关,这里不一一介绍了。bash
这里把个人环境变量设置一口气发出来:jvm
执行命令 gedit ~/.bashrc 打开配置文件后,加入如下内容ui
export ANDROID_HOME=/home/cai/candy/develop/adt-bundle-linux-x86_64-20131030/sdkspa
export PATH=$PATH:$ANDROID_HOME/platform-tools
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45debug
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar orm
export PATH=$PATH:$JAVA_HOME/binblog
做为参考就能够,我编译的源码是4.3,若是你编译最新的4.4估计须要jdk是版本为7。
下载源码后,编译源码,仍然按照官方文档,执行
source build/envsetup.sh
lunch
出现一些须要选择的项目
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_x86-eng
3. aosp_mips-eng
4. vbox_x86-eng
5. aosp_flo-userdebug
6. full_grouper-userdebug
7. full_tilapia-userdebug
8. mini_armv7a_neon-userdebug
9. mini_mips-userdebug
10. mini_x86-userdebug
11. full_mako-userdebug
12. full_maguro-userdebug
13. full_manta-userdebug
14. full_arndale-userdebug
15. full_toroplus-userdebug
16. full_toro-userdebug
17. full_panda-userdebug
我这里选择的1,aosp_arm-eng
我主要是在模拟器中完成,因此aosp就能够了。
最后make -j4
编译出错大体都是和少一些库有关,根据提示安装相关的库就能够。
编译完成后,咱们就可使用android模拟器emulator运行编译出来的源码,编译完成会生成相应的system.img,userdata.img,ramdisk.img都在~/android4.3/out/target/product/generic下面能够看到,所以咱们须要添加环境变量
export ANDROID_PRODUCT_OUT=~/android4.3/out/target/product/generic
export ANDROID_PRODUCT_OUT_BIN=~/android4.3/out/host/linux-x86/bin
export PATH=$PATH:$ANDROID_PRODUCT_OUT_BIN:$ANDROID_PRODUCT_OUT
最后只要执行emulator就能够启动模拟器了
可是,从新启动一个命令终端,执行emulator就会出现如下错误
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
不知道你们遇到过没,因而我查了一些资料,发如今环境变量里添加如下源码路径就行了
export ANDROID_BUILD_TOP=~/android4.3
多是和版本有关系,目前解决方法设置ANDROID_BUILD_TOP环境变量
emulatro -skin WSVGA
以后就能够修改framework源码,而后在模拟器中查看效果。