基于Orange的安卓UI自动化学习笔记(三)

上一篇主要介绍了命令行执行UI自动化测试用例,在上一节中我们已经可以实现通过本地命令行java -jar orange-XXX.jar config.properties的方式实现apk重签名、UI自动化工程打包、真机上安装、解析测试用例xml配置文件、执行测试用例等一系列步骤。但是前提是本地已经手动执行过一次测试工程,也就是在bin目录下要已经生成YourProjectName.apk文件后才能执行java -jar本地脚本命令。如何才能把UI自动化测试工程打包成apk的过程也统一起来呢?可以用ant构建工具!
关于安卓UI自动化学习,我的学习路线是这样安排的:
(一)本地:能够独立完成一个UI自动化工程的建立
(二)本地:命令行执行UI自动化测试用例
(三)本地:ant打包测试工程apk+执行UI自动化用例一体化
(四)jenkins:持续集成平台成功构建UI自动化工程
(五)jenkins:真机换成模拟器
(六)jenkins:持续集成平台实现被测apk自动打包编译+自动化一体化
(七)UI自动化用例编写语法和规范
本章内容就是第三部分,本地:ant打包测试工程apk+执行UI自动化用例一体化

一、ant打包安卓工程原理介绍

ant打包安卓工程的主要步骤如下:

  1. android update project -p .
    该过程主要是在目录下生成ant编译需要的文件build.xml。
    执行完这条指令后,我们在目录下发现多了build.xml和local.properties两个文件,这两个文件都是自动生成的,前者是编译需要的文件,其中的内容很简单,主要是做了一些xml配置文件的路径指定,最关键的就是指定了sdk下的build.xml文件路径。后者则主要是指定了本机的sdk所在路径。(sdk下的build.xml是android自带的安卓工程ant打包用的配置文件)

2.添加对签名的支持,新增文件ant.properties,加入签名信息。
key.store=xxx.keystore
key.alias=xxx
key.store.password=xxx
key.alias.password=xxx

3.执行ant release命令,即可在bin目录生成xxx-release.apk的安装包。

是不是超简单?但是简单的前提是安卓官方的sdk自带的build.xml中集成好了了复杂的打包过程,包括各个target的目标和不同Target之间的依赖关系。有兴趣的可以找出来这个build.xml研究下内部具体的安卓打包过程。
同时ant release可能出现的问题是:

基于Orange的安卓UI自动化学习笔记(三)_第1张图片
问题分析一

出现这种问题的解决办法是可以执行ant clean release或者在本地eclipse上对工程做一下clean处理就OK了。
另一个问题有可能出现:

基于Orange的安卓UI自动化学习笔记(三)_第2张图片
问题分析二

这种问题通常是由于java执行路径中没有需要的jar包造成的。ant会默认将libs目录下的jar包都放入class path中,但是如果我们在建立工程的时候没有生成libs目录,build path中的jar包都是来源于第三方的jar包。这种情况下,我们可以通过新增custom_rules.xml文件来解决该问题。

基于Orange的安卓UI自动化学习笔记(三)_第3张图片
custom_rules.xml文件示例

添加好后,执行ant clean release就OK啦!

一、ant打包安卓工程原理介绍

你可能感兴趣的:(基于Orange的安卓UI自动化学习笔记(三))