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代码时并不需要这两个命令), 方法如下:
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
对于内存占用量居高不下的情况可具体查看是哪些进程占用了内存,或者重启机器来释放内存。