Ubuntu 16 下载、编译Nexus 6 Android6.0源码记录

    前一阵将Ubuntu从14升级到了16,首先做的就是把导航栏从左侧移到了下面,呵呵,Windows用习惯了。

    这里就讲一下下载、编译nexus 6的Android6.0源码过程遇到的问题。

    其实官网已经讲的很详细了,英文好的建议到安卓源码官网 开始按左侧栏目从上往下,依次预览整体流程、建立编译环境、下载源码,编译源码blabla,按步骤一步步操作即可。英文不好的建议去搜索引擎搜别人分享的编译经验吧。我这里主要分享下完全按照官网的下载、编译顺序操作时仍然遇到的,但是官网没提示解决方案的问题。

    编译环境:Ubuntu 16(64位),Open jdk8。

问题一:编译报错 提示Java版本错误   解决方法:

Ubuntu16默认使用的JDK是Open jdk8,而编译Nexus6 的6.0源码需要Open jdk7,这时通过apt-get下载不到Open jdk7!因为Ubuntu 16已经将它从源码库里移除了,解决方法是手动添加仓库再下载安装:

sudo add-apt-repository ppa:openjdk-r/ppa  
sudo apt-get update   
sudo apt-get install openjdk-7-jdk

  

问题二:编译报错recipe for target 'out/host/linux-x86/obj/lib/libart.so' failed 解决方法:

clang编译器导致的问题,修改方法是在art/build/Android.common_build.mk ,中将host 默认编辑器使用clang关掉,找到WITHOUT_HOST_CLANG,关闭clang即可。

# Host

ART_HOST_CLANG := false

ifneq ($(WITHOUT_HOST_CLANG),true)

# By default, host builds use clang for better warnings.

ART_HOST_CLANG := false

endif


问题三:编译报错 ERROR:Cannot launch Jack Server   解决方法:

Android M引入了Jack (Java Android Compiler Kit),在编译时会启动jack server,优化编译速度等。
如果遇到jack编译错误,可以把$HOME/.jack中的配置文件中的SERVER=true设成false,不用jack,jack现在还不稳定。

问题四:这个问题之前只是编译模拟器所以没发现,最近把自己的nexus6备份好,准备刷入系统时才发现,就是lunch时明明选择的21(aosp_shamu-userdebug),结果一到make就变成了默认的1(aosp_arm-eng),结果导致编译的模块不能用,甚至连boot.img都没有,暂时解决方法是在make的时候在附加参数里设置TARGET_PRODUCT,  TARGET_ARCH,  TARGET_BUILD_TYPE这些,后期研究出更好的解决方法再贴出来。

问题四更新:其实这个问题应该不算个问题,因为产生这个问题是在普通用户下通过sudo make -j8来执行make命令的,后来编译的时候我将用户切换为root用户执行编译过程,上述问题就不存在了,看官网的执行过程,应该也是以root用户执行的,因为整个过程并没有sudo的存在。




   



   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值