Jacoco简介
JaCoCo是一个开源的覆盖率工具(官网地址:http://www.eclemma.org/JaCoCo/),它针对的开发语言是java,其使用方法很灵活,可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其JavaAgent技术监控Java程序等等。
很多第三方的工具提供了对JaCoCo的集成,如sonar、Jenkins等。
Instrumentation
Instrumentation和Acitivity很类似,但是没有图形界面。
可以把它理解为用于监控其他类的工具类。
继承自以下教程
https://blog.csdn.net/qq_27459827/article/details/79514941?utm_source=blogxgwz0
https://blog.csdn.net/niubitianping/article/details/52918809
https://blog.csdn.net/itfootball/article/details/45644159
//www.greatytc.com/p/02df72937692(这个教程包含demo非常适合学习)
讲一下在这里遇到的问题及处理
1、多渠道打包中获取包名的问题(productFlavors)
关于Android调试的命令
//www.greatytc.com/p/183ee396d799
可以查看手机目前装了那些instrumentation
adb shell pm list instrumentation
会出现手机目前装了instrumentation列表
instrumentation:com.netease.open.pocoservice.test/android.support.test.runner.AndroidJUnitRunner (target=com.netease.open.pocoservice)
找到自己需要的程序启动,并启动
adb shell am instrument -w -r com.lightingcontour.lc_jacocosample/.test.JacocoInstrumentation
2、gradle新版本配置生成报告的文件夹
classDirectories = fileTree(
dir: '../app/build/intermediates/classes/debug',
excludes: ['**/R*.class',
'**/*$InjectAdapter.class',
'**/*$ModuleAdapter.class',
'**/*$ViewInjector*.class'
])
sourceDirectories = files(coverageSourceDirs)
executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
①手动生成buildDir/outputs/code-coverage/connected文件夹
②将低版本gradle的路径进行修改
/app/build/intermediates/classes/debug
改为
/app/build/intermediates/javac/Debug/compileDebugJavaWithJavac/classes
doFirst {
new File("$buildDir/intermediates/classes/").eachFileRecurse { file ->
if (file.name.contains('$$')) {
file.renameTo(file.path.replace('$$', '$'))
}
}
改为
doFirst {
new File("$buildDir/intermediates/javac/Debug/compileDebugJavaWithJavac/classes/").eachFileRecurse { file ->
if (file.name.contains('$$')) {
file.renameTo(file.path.replace('$$', '$'))
}
}