欢迎手机类测试同行交流,可加群 19591195,加群时请注明来源于51testing,谢谢。

【Android-源码编译】问题一: JAVA版本

上一篇 / 下一篇  2013-08-06 14:52:44

为了更好的了解android的instrumentation测试,当初的想法就是:
1. 下载完整的android源码
2. 编译源码以得到instrumentation测试apk
3. 执行instrumentation测试
鉴于上面的想法,于是有了本文以及接下来的几篇关于android源码编译的文章

首先当然是下载android的源码了,我下载的是Android 4.2.2_R1. 至于怎么去下载,这里就不再赘述了,网上有很多这方面的教程。不过注意一点就是,磁盘的空间一定要留足。编码本身加速编译输出,差不多得30到40G的磁盘空间。

下面就是本文的主题了,编译时提示JAVA版本不正确。

【问题描述】

由于之前PC在装Android SDK的时候装的是JDK1.7.05的版本,而编译android source code时候会提示java版本错误,然后编译终止。

【解决思路】

1.      Java版本的问题在编译的时候其实是在源码/build目录中定义的,因此首先考虑修改/build目录相关文件中对java以及javac版本的判断,从而达到不重新安装新版本java而实现编译的目的。

Ø 打开/build/core/main.mk文件,从第126行开始,就会发现makefile文件对java以及javac版本的判断,相关代码如下图:


Ø 分析上面的代码,就明白使用系统自带的Openjdkjdk1.7无法进行编译的原因了,因此,我们修改 '^java .*[ "]1\.6[\. "$$]'    '^java .*[ "]1\.7[\. "$$]'

Ø 同上,再次文件中修改对javac版本的判断,修改之后再进行源码的编译。

 

1.      如果按照方法1修改之后仍然提示java版本相关的问题,这个时候,我们只能考虑按照编译要求,安装指定版本的JDK了,也就是jdk 1.6的版本。

Ø http://java.sun.com中下载jdk,我的版本是jdk1.6.0_12,我下载的是bin文件,我将下载的jdk1.6.0_12.bin文件置于/usr/lib/jvm/java
然后,在shell中执行

sudo chmod u+x /usr/lib/jvm/java/jdk1.6.0_12.bin 

Ø 修改bin文件权限,使其可执行,然后执行:

sudo /usr/lib/jvm/java/jdk1.6.0_12.bin 

Ø 配置环境变量

sudo vi /etc/environment

添加以下内容:

PATH"......:/usr/lib/jvm/java/jdk1.6.0_12/bin"
CLASSPATH=.:/usr/lib/jvm/java/jdk1.6.0_12/lib
JAVA_HOME=/usr/lib/jvm/java/jdk1.6.0_12

Ø 配置生效

sudo source /home/ghoul/.bashrc

 

Ø 添加新安装的java版本

update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.6.0_12/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.6.0_12/bin/javac 300

Ø 修改默认java版本

update-alternatives --config java

选择jdk1.6.0.12作为目前的jdk的版本

Ø 查看java目前版本

java –version

javac –version

这时,如果显示java的版本是我们安装的1.6.0.20,那就说明JDK 1.6安装成功。

 

2.      上面两步之后,编译过程中仍提示JAVA LIBRARIES相关的问题,如下:

这是由于安装的java下的jar包没有被调用到的缘故,这个跟之前设置的JAVA_HOME可能有关,解决办法如下:

Ø 查看jar是否在安装的路径中:

whici jar

-   如果不在安装的java目录下,使用sudo update-alternatives –config jar配置

-   如果输出为空,可以通过link的形式将jar等文件连接到/usr/bin/jar等文件中:

sudo ln -s /jdk1.6.0_12/bin/jar /bin/jar

sudo ln -s /jdk1.6.0_12/bin/java /bin/java

sudo ln -s /jdk1.6.0_12/bin/javac /bin/javac

sudo ln -s /jdk1.6.0_12/bin/javah /bin/javah

sudo ln -s /jdk1.6.0_12/bin/javadoc /bin/javadoc

 

至此Java的问题应该都能够解决了。


TAG: Android 源码编译 JAVA版本

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-17  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 15586
  • 日志数: 14
  • 建立时间: 2013-08-06
  • 更新时间: 2014-06-30

RSS订阅

Open Toolbar