将 jacoco-agent.properties 打包到 APK 中以便可以读取?

2024-01-21

这是我的情况:

背景

  • 我正在调查我们的 Android 应用程序的代码覆盖率。该应用程序是使用 Gradle 和 Android Studio 构建的。
  • 我在两种情况下需要代码覆盖率报告:在手动测试期间,以及在使用我们庞大的 Appium 套件构建的自动化测试期间。
  • 我需要进行概念验证fast(不是一直都是这样吗?)所以我还没有机会进行彻底的研发。所以请原谅我表现出的任何无知:)
  • 我可以访问应用程序源代码,但对移动部分知之甚少。
  • 我调查了JaCoCo和Emma。这个问题与JaCoCo有关。
  • 鉴于我们需要覆盖 Appium 和手动测试,我相信 JaCoCo 的离线检测就是我所需要的。

取得的进展

  • I used JaCoCo 插件页面 https://docs.gradle.org/current/userguide/jacoco_plugin.html and Android 工具页面 http://tools.android.com/tech-docs/new-build-system并且可以正确配置build.gradle。
  • 我已经验证了这些课程(存在于build\intermediates\classes)使用 JaCoCo 进行检测,并打包在 APK 中。
  • 我写了一个BroadCastReceiver这个SO讨论 https://stackoverflow.com/questions/30976319/android-gradle-jacoco-offline-instrumentation-for-integration-tests,将接收“最终报道”广播。

Problem

当我手动运行该应用程序时,我不断在 logcat 中看到错误 W/System.err:java.io.FileNotFoundException:/jacoco.exec:打开失败:EROFS(只读文件系统)

From 这个问题 https://stackoverflow.com/questions/19327112/how-to-supply-jacoco-agent-to-an-android-app and JaCoCo 文档 http://eclemma.org/jacoco/trunk/doc/offline.html我知道 Jacoco 需要知道在哪里存储jacoco.exec文件 - 我需要打包一个 jacoco-agent.properties (包含destfile属性)与 APK。

我尝试将 jacoco-agent.properties 放入assets- 它被正确打包到APK中,但似乎没有任何效果(即Jacoco像往常一样失败) 我试着把它放进去res- 它没有被打包到APK中。 我试过res/raw并遇到有关文件名中破折号的错误,如下所示这个问题 https://stackoverflow.com/questions/19327112/how-to-supply-jacoco-agent-to-an-android-app.

我束手无策,非常感谢帮助。如何使用我的 Gradle 构建将 jacoco-agent.properties 打包到 APK 中,以便 JaCoCo 能够读取它?

相关问题

这个问题 https://stackoverflow.com/questions/19327112/how-to-supply-jacoco-agent-to-an-android-app,有一个 2013 年的答案,它是针对 Ant 的,而不是 Gradle 的。


我不熟悉执行的要求Jacoco工作正常,但你可以很容易地用 apk 打包一个文件。下面的代码将放置jacoco-agent.properties在你的 apk 包的根目录下。

进行这些更改build.gradle对于您的应用程序模块:

android {
    ...
    sourceSets {
        main {
            resources.includes = [ '**/jacoco-agent.properties' ]
        }       
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 jacoco-agent.properties 打包到 APK 中以便可以读取? 的相关文章