是否可以使用Android build.xml简单地编译Emma检测APK并且不运行任何测试

Gre*_*lli 6 android

我知道

ant coverage
Run Code Online (Sandbox Code Playgroud)

然而,做了几件事情,它与艾玛仪表编译,安装和运行测试APK.我不希望它通过蚂蚁与覆盖运行测试套件,因为我需要一些额外的钩子运行它,我不想跑两次大的测试套件.到目前为止,我已经尝试过了

Target_Project/build.properties

emma.enabled=true
Run Code Online (Sandbox Code Playgroud)

Test_Project/build.properties

emma.enabled=true
Run Code Online (Sandbox Code Playgroud)

然后在shell中执行此操作.

Target_Project$ ant debug
Target_Project$ adb install bin/Target_Project-debug.apk
Target_Project$ cd ../Test_Project/
Test_Project$ ant debug
Test_Project$ adb install bin/Test_Project-debug.apk
Test_Project$ adb shell am instrument -e coverage true -e coverageFile /sdcard/myFile.ec -w com.my_app.testproject/android.test.InstrumentationTestRunner
Run Code Online (Sandbox Code Playgroud)

回应是

Error: Failed to generate emma coverage. Is emma jar on classpath?
Run Code Online (Sandbox Code Playgroud)

那么,有没有什么窍门能让apk中建立一个能与艾玛库?我试图调用SDK中的XML模板创建的目标,但他们是"私人".有什么我想念的吗?

Gre*_*lli 3

对于任何有兴趣的人来说都很好。SDK 文档完全被破坏(我知道这很令人惊讶)。基本上你必须这样做,

获取 android create-project 生成的基础 build.xml 并更改标签

<setup/>
Run Code Online (Sandbox Code Playgroud)

并将其更改为

<setup import="false"/>
Run Code Online (Sandbox Code Playgroud)

现在文档将告诉您从 SDK/platform-/templates/android_rules.xml 进行复制并将其放入您的 build.xml 中... 这是错误的并且严重无法维护。该规则文件不被任何东西使用。使用的是SDK/tools/ant/里面的规则。使用最新的 _r 获取适合您的项目类型的适当文件(库项目的库、测试项目的测试或常规项目的普通文件),并将
其根节点的内容复制到您的 build.xml 中。将其插入到设置标签之后。如果不使用ant目录下的文件,将无法通过ant脚本编译项目库。我很高兴他们保留了有关如何执行此操作的文档。

现在您可以在构建文件中更改您喜欢的任何内容以满足您的构建需求。在这种情况下,我只是让 install-helper 调用我的 adb 包装器,它返回解释的结果代码。