到此一游

If I can not see you again, good morning, good afternoon and good night!

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的存在。




   



   

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gh8609123/article/details/51563812
个人分类: 安卓开发
上一篇Android开发报错:GoogleApiClient.isConnected()' was expected to be of type interface but instead was ...
下一篇Android UI 之 Tab类型界面总结
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭