Android系统的编译工作始终是一件基础性工作,但是随着Android版本的不断升级、Ubuntu的升级、JDK版本的升级等等、以及各种第三方依赖库、不同的系统配置不同的人编译会有不同的问题,同一个人在不同的时间编译也可能会遇到问题。AndroidO版本推出不到一年,据说目前只有百分之一的手机在用,这不,AndroidP版本马上就要出来了!
Google对Android O的编译要求是这么建议的:
(https://source.android.com/setup/build/requirements)
安智客今天要呈现的是一个失败的、初级的问题,也就是Android O的编译问题,在服务器上2小时完成的编译,为啥在安智客好不容易升级成8G内存的电脑上弄了2天呢?现在把几个主要问题记录一下:
1,JDK版本问题,这个是最基础问题还是记录一下。
解决办法:这个最好办:
sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk sudo update-alternatives --config java
sudo update-alternatives --config javac
java –version
其他,还有一些Ubuntu版本导致的库的问题,这个是时候,差什么就安装什么了!
2,ln问题。
解决办法,
当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。
比如:ln -srf build/soong/root.bp Android.bp
3,出现oversize超了的错误,说明要修改默认配置。
解决办法:
因为默认是16G内存,所以需要修改配置。
修改Jack的配置文件prebuilts/sdk/tools/jack-admin
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1-Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx3000m-cp$LAUNCHER_JAR $LAUNCHER_NAME"
先停止服务./prebuilts/sdk/tools/jack-admin stop-server 重新开始服务./prebuilts/sdk/tools/jack-admin start-server
最后终于编译通过!
附录:jack的错误往往很纠结,可以参照:
大家都遇到过一些什么有趣且能涨知识的问题呢,欢迎讨论!