一、编译安卓5.01之前配置编译环境
1.配置一些依赖软件:
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa- dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev
2.配置JDK编译环境
我电脑里装了两个版本的jdk:1.6和1.7,而安卓5.01需要1.7版本的jdk,所以需要切换jdk版本,使用如下命令进行切换:
$ sudo update-alternatives –config java $ sudo update-alternatives –config javac二、出现编译错误
java.lang.UnsupportedClassVersionError: com/google/doclava/Doclava : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) at java.lang.ClassLoader.defineClass(ClassLoader.java:615) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:247) at com.sun.tools.javadoc.DocletInvoker.<init>(DocletInvoker.java:74) at com.sun.tools.javadoc.Start.setDocletInvoker(Start.java:380) at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:179) at com.sun.tools.javadoc.Start.begin(Start.java:128) at com.sun.tools.javadoc.Main.execute(Main.java:41) at com.sun.tools.javadoc.Main.main(Main.java:31) javadoc: 错误 - 致命错误 1 错误 make: *** [out/target/common/docs/api-stubs-timestamp] 错误 45 make: *** 正在等待未完成的任务....
1.百度查资料发现,在编译高低版本Android工程时使用如下命令切换java版本似乎并不彻底,需
要彻底切换。使用下面命令可以进行查询并切换:$ update-java-alternatives --list java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64 $ sudo update-java-alternatives -s java-1.7.0-openjdk-amd64 update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so切换的时候提示错误
update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so那么就需要安装IcedTeaPlugin才能完成切换:
$ sudo apt-get install icedtea-7-plugin再次输入切换命令则可以成功切换。
$ sudo update-java-alternatives -s java-1.7.0-openjdk-amd64
四、再次编译安卓5.0系统
如无意外,再次编译安卓5.0则会顺利编译完成。
五、分析jdk版本为啥切换不彻底
究其原因,是缺少“ icedtea-7-plugin”,导致切换jdk1.7的时候不彻底,jdk1.7部分功能缺少,只要补全这个插件即可。
参考资料:
1.update-java-alternatives: plugin alternative does not exist之解决方法