Android 源码下载及编译
下载repo
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
将PATH export进来
初始化repo
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest
选择特定版本
我们需求从5.0到最新的8.0 比如选择7.0:
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-7.0.0_r1
特定版本号可以直接在googlesource查看,也可以通过下面的方式:
cd .repo/manifests
git branch -a
查看当前已有的版本
cat build/core/version_defaults.mk |grep PLATFORM_VERSION
下载
因文件较大,可能出现断线的情况。用下面的脚本确保续传。
#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? -ne 0 ];do
echo "======sync failed, re-sync again======"
sleep 3
repo sync
done
编译
按我们的项目其实并不需要编译,我们可以把特定版本的手机system/lib pull 下来即可。
- error 1
缺乏jdk支持
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk
- error 2
unsupported reloc 43 against global symbol
参考这里。
- android-7.0 error 1
Communication error with Jack server (56). Try 'jack-diagnose'
- android-7.0 error 2
FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
31 Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.co m)).
32 GC overhead limit exceeded.
参考这里。