android 源代码编译
来源:互联网 发布:js confirm样式修改 编辑:程序博客网 时间:2024/05/19 18:39
android源代码研究是通向高级Android工程师的必由之路。下面选择两个版本的Android源码编译总结实践经验。
1、android源代码获取
android源代码获取工具:repo,基于git改装。
repo使用:安装repo工具(网上找方法),新建空工程目录,在此目录下repo init -u http://... (这个初始化命令仅对当前目录有效,其配置信息写在当前目录的".repo"目录下),repo sync,漫长等待。
android源代码下载:用国外的源是下不到的,一般要用清华或者中科大的源。
android源代码体积较大,一般建议Ubuntu的磁盘空间不小于100G。
android源代码时间比较长,建议取消Ubuntu自动休眠断网。方法是:System Settings --> Security & Privacy --> 勾销 "Waking from suspend" 和 "Returing from blank screen"。
android国内的源不稳定,可能时常断网。看见进度长时间不动就"Ctrl+C",再 repo sync。repo是有缓存的,会在上次中断的地方继续下,所以不要删除repo当前执行目录下的缓存文件".repo"。
详细步骤如下:
##下载工具准备sudo apt-get install gitsudo apt-get install curl##下载目录准备mkdir ~/binPATH=~/bin:$PATHecho $PATH##下载repo并授权curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repomkdir -p ~/android-sources/6/cd ~/android-sources/6/##初始化gitgit config --global user.email "3126446495@qq.com"git config --global user.name "YongYu_IT"##初始化repo仓库repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest##或者指定android版本repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.0.0_r6##如果repo init连接失败,将~/bin/repo文件里的REPO_URL值改为https://gerrit-google.tuna.tsinghua.edu.cn/git-repo,重试repo sync
2、编译
android2.3要求的JDK版本是oracle jdk1.6,android-6.0.1_r30要求的JDK是Open jdk1.7。实践证明,android2.3和android6.0的编译环境除了jdk要求不同外,其他所有配置都相同,鉴于2.3的资料较多,建议先配好环境编译通过2.3,然后改jdk编译android6.0。
在源代码根目录下执行"make"即可编译,如果需要发布开发者SDK,则在make命令成功执行之后执行"make sdk"
make过程中会遇到很多问题,这些问题都可以百度找到答案。值得注意的是,这些问题主要是编译工具造成的,源代码下载下来的内容是不需要改的。试图通过修改源代码下载内容来使编译通过的做法是方向性错误。
3、启动模拟器
假设工程目录(下载目录)是ANDROID_SOURCE
android2.3:
export ANDROID_PRODUCT_OUT=$ANDROID_SOURCE/out/target/product/generic/
cd $ANDROID_SOURCE/host/linux-x86/bin
./emulator &
android6.0:
export ANDROID_BUILD_TOP=$ANDROID_SOURCE/
export ANDROID_PRODUCT_OUT=$ANDROID_SOURCE/out/target/product/generic/
cd $ANDROID_SOURCE/prebuilts/android-emulator/linux-x86_64
./emulator &
4、编译android内核
android源码并不提供linux内核源码,随源码下载下来的是编译好的内核镜像。如果需要干预内核的话,需要自己编译内核源码,得到定制内核。
git下载内核源码 --> 修改Makefile文件 --> 执行编译
模拟器运行指定内核的android系统(2.3系统为例):
假设内核目录(下载目录)是KERNEL_SOURCE
cd $ANDROID_SOURCE/host/linux-x86/bin
./emulator -kernel $KERNEL_SOURCE/arch/arm/boot/zImage &
5、清理编译缓存
不彻底:make clear
彻底:make clobber(这会完全清理源代码到下载完成的状态)
- Android源代码编译
- gentoo编译 android源代码
- Android源代码编译
- Android SDK 源代码编译
- Android源代码编译过程
- Android源代码的编译
- Android SDK 源代码编译
- 编译Android源代码
- Android SDK 源代码编译
- 编译Android源代码
- 编译Android源代码
- Android SDK 源代码编译
- 编译android 源代码
- Android源代码模块编译
- Android SDK 源代码编译
- Android SDK 源代码编译
- android源代码编译
- 编译Android源代码
- 【Spring学习笔记】Spring框架的IoC容器学习笔记
- iptables导致nginx反向代理不可用的解决方案
- 未解之谜
- 详解DHCP Snooping
- LR11创建场景报错:Failed to create Online: Invalid pointer
- android 源代码编译
- CodeForces667APouring Rain(数学)
- Android 进程不死保活
- 仿某助手,通过浏览器直接打开Android 自己的App 应用程序(支持几乎所有浏览器、app)
- python面向对象详解(转)
- AndroidStudio上传jcenter及各种实现方式的比较
- 19. Remove Nth Node From End of List(Linked List)
- mysql无法登陆问题
- Lucene评分机制