背景
系统应用使用了 android:sharedUserId="android.uid.system",在运行jacoco脚本生成代码覆盖率时,在data/data/包名下可以看到生成了coverage.ec文件,但是在app/build/outputs/code_coverage/debugAndroidTest/connected/设备名称目录下没有coverage.ec文件。
解决方案
app/build.gradle中加入如下代码即可
android {
defaultConfig {
testInstrumentationRunnerArguments useTestStorageService: 'true'
}
}
dependencies {
androidTestUtil 'androidx.test.services:test-services:1.4.1-alpha02'
}
原因猜想
生成coverage.ec之后,AndroidStudio并不是通过如adb pull命令将文件pull到本地的,而是通过Socket(github.com/jacoco/jaco…):
使用
android:sharedUserId="android.uid.system"之后,可能造成Socket访问异常了(具体原因未分析出来)