android 源代码编译

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 git
sudo apt-get install curl
##下载目录准备
mkdir ~/bin
PATH=~/bin:$PATH
echo $PATH
##下载repo并授权
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

mkdir -p ~/android-sources/6/
cd ~/android-sources/6/
##初始化git
git 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(这会完全清理源代码到下载完成的状态)




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值