ubuntu14.04编译安卓5.0遇到的坑

一、编译安卓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之解决方法 

2. android 5.0.1: Unsupported major.minor version 51.0

3.android系统编译对jdk和make的版本要求



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值