1. 下载完整的android源码
2. 编译源码以得到instrumentation测试apk
3. 执行instrumentation测试
首先当然是下载android的源码了,我下载的是Android 4.2.2_R1. 至于怎么去下载,这里就不再赘述了,网上有很多这方面的教程。不过注意一点就是,磁盘的空间一定要留足。编码本身加速编译输出,差不多得30到40G的磁盘空间。
【问题描述】
由于之前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版本的判断,相关代码如下图:
Ø 分析上面的代码,就明白使用系统自带的Openjdk和jdk1.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的问题应该都能够解决了。