Android7.0代码编译环境(多JDK安装&jack常见报错)

AndroidN升级之后,对Ubuntu的环境要求至少是Ubuntu14.04,为此要重新装系统(狗血。。),对JDK的要求也升级到openjdk-8,但还是需要保留原有的openjdk-7,Android6.0的JDK版本要求还是7。

先说多JDK的版本安装,一台机器上同时安装了多个JDK版本需要做如下配置,以便方便切换:
1、我本机的JDK的安装路径:/usr/lib/jvm/, ls可以看到有6、7、8三个版本的JDK;
这里写图片描述
2、配置环境变量: sudo vim /etc/profile
在末尾增加三行:

export JAVA_HOME=/usr/bin/java
export PATH= PATH: {JAVA_HOME}/BIN:${JAVA_HOME}/jre/bin
export CLASSPATH= CLASSPATH:.: JAVA_HOME/lib:$JAVA_HOME/jre/lib

这里写图片描述

这里注意:JAVA_HOME我们并没有具体指向到某一个版本的JDK,而是指向到usr/bin/java,是为了方便下面的切换

3、配置update-alternatives命令:
先把三个版本的JDK安装指向到/usr/bin/java, 末尾的0、1数字代表优先级,我们把最常用的JDK8的优先级调到最高

sudo update-alternatives –install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1
sudo update-alternatives –install /usr/bin/java java /usr/lib/jvm/java-7-openjdk-amd64/bin/java 0
sudo update-alternatives –install /usr/bin/java java /usr/lib/jvm/java-6-sun/bin/java 0

以同样的方式配置好javac、javah

sudo update-alternatives –install /usr/bin/javac javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 1
sudo update-alternatives –install /usr/bin/javac javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac 0
sudo update-alternatives –install /usr/bin/javac javac /usr/lib/jvm/java-6-sun/bin/javac 0
sudo update-alternatives –install /usr/bin/javah javah /usr/lib/jvm/java-8-openjdk-amd64/bin/javah 1
sudo update-alternatives –install /usr/bin/javah javah /usr/lib/jvm/java-7-openjdk-amd64/bin/javah 0
sudo update-alternatives –install /usr/bin/javah javah /usr/lib/jvm/java-6-sun/bin/javah 0

如果配置错误的话,可以通过remove命令删除
update-alternatives –remove name path

*在编译最新的7.0代码时, 还被要求了jar 和 javadoc, 需要用以上配置方法配置jar和javadoc, 或也可以手动写死jar和javadoc的引用路径指向到openjdk8的bin目录(编译6.0代码时并不需要这两个命令), 方法如下:

cd /usr/bin/
ln -s -f /usr/lib/jvm/java-8-openjdk-amd64/bin/jar
ln -s -f /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc

现在就可以通过config命令来切换java版本了,sudo update-alternatives –config java
这里写图片描述

切换完,可以通过java -version来确认一下是否切换成功
这里写图片描述

至此,JDK环境已经配置完成,可以开始编译Android7.0代码了,AndroidN上的代码编译使用了jack服务,对系统内存有很高的要求,在编译过程中,往往会因为请求不到可用内存而失败,常见的错误及解决方案:

这里写图片描述
解决方案:
代码根目录下执行
export JACK_SERVER_VM_ARGUMENTS=”-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g”
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
如果不能重新启动start-server,可以查看一下当前系统的内存使用情况 free -m
对于内存占用量居高不下的情况可具体查看是哪些进程占用了内存,或者重启机器来释放内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值