1. 在工程的oncreate()方法添加如下代码,目的是创建ec文件.
 String DEFAULT_COVERAGE_FILE_PATH = "/mnt/sdcard/coverage.ec";

        File file = new File(DEFAULT_COVERAGE_FILE_PATH);

        if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}

  2.在工程的ondestory()方法添加如下代码,目的是写入数据.

				OutputStream out = null;
try {
out = new FileOutputStream("/mnt/sdcard/coverage.ec", false);
Object agent = Class.forName("org.jacoco.agent.rt.RT")
.getMethod("getAgent")
.invoke(null); out.write((byte[]) agent.getClass().getMethod("getExecutionData", boolean.class)
.invoke(agent, false));
} catch (Exception e) {
Log.d(TAG, e.toString(), e);
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

  

  3.build里面增加如下内容,目的是为了生成报告.ec文件放在./build/outputs目录下.

apply plugin: 'jacoco'

task jacocoTestReport (type:JacocoReport) {

    group = "Reporting"

    description = "Generate Jacoco coverage reports on the  build."

    classDirectories = fileTree(

            dir: "${project.buildDir}/intermediates/classes",

            excludes: ['**/R.class',

                       '**/R$*.class',

                       '**/*$ViewInjector*.*',

                       '**/BuildConfig.*',

                       '**/Manifest*.*']

    )

    def coverageSourceDirs = [

            "src/main/java"

    ]

    additionalSourceDirs = files(coverageSourceDirs)

    sourceDirectories = files(coverageSourceDirs)

    executionData = fileTree(dir:'./build/outputs',include:'**/*.ec')

    reports {

        xml.enabled = true

        html.enabled = true

    }

}

  

  4. AndroidManifest.xml里面需要确认一下写sd的权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  

  5.在build.gradle的buildTypes添加一行代码testCoverageEnabled = true

  6.生成apk后,进行手动测试,测试完毕后使用adb pull /sdcard/coverage.ec d:\test 进行导出,然后将ec文件放到./build/outputs目录下,执行命令:gradlew jacocoTestReport,然后就可以看报告了.

  同时,上面这个做法可以完美解决这个报错:

java.io.FileNotFoundException: /jacoco.exec: open failed: EROFS (Read-only file system)

安卓代码覆盖率:android studio+ gradle+jacoco的更多相关文章

  1. 安卓工作室 android studio 的 汉化 美化 定制 Android studio's Chinesization beautification customization

    安卓工作室 android studio 的 汉化 美化 定制 Android studio's Chinesization beautification customization 汉化包 百度云盘 ...

  2. android studio gradle的坑

    国产模拟器别国外的好用.非常傻瓜.有人推荐夜神. 之前用geom,下载Android都得半天.     每次做开发前,配置环境都要搞半天.尤其是想快速学习一个技术的话,光装环境都让人放弃了.最近想看一 ...

  3. [转]加速Android Studio/Gradle构建

    加速Android Studio/Gradle构建 android android studio gradle   已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...

  4. 解决Android Studio Gradle Build Running慢的问题

    Android Studio方便好用,但是Android Studio Gradle Build Running很慢 解决方法: C:\Users\你的用户名\.gradle 目录下新建一个文件名为 ...

  5. Android studio gradle 打包 那些事

    总结了一下 目前觉得比较好用的gradle 和一些打包 经验.放在这里. 首先说下 渠道号 这个概念,我们经常会统计我们的api 访问来源 是来自于那个app store,这有利于 我们针对性的推广. ...

  6. 解决Android Studio Gradle Build特别慢的问题

    解决Android Studio Gradle Build 特别慢的问题 C:\Users\你的用户名\.gradle目录下新建一个文件名为gradle.properties的文件.内容为:org.g ...

  7. android studio gradle 两种更新方法更新

    android studio gradle 两种更新方法更新 第一种.Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrappergradle-wrapper ...

  8. android studio gradle 更新方法。

    Android studio更新 第一步:在你所在项目文件夹下:你项目根目录gradlewrapper gradle-wrapper.properties   (只要在打开项目的时候选OK,这个文件就 ...

  9. 安卓工作室 Android studio 或 Intellij IDEA 美化 修改 汉化 酷炫 装逼 Android studio or Intellij IDEA beautify modify Chinesization cool decoration

    安卓工作室 Android studio 或 Intellij IDEA 美化 修改 汉化 酷炫 装逼 Android studio or Intellij IDEA beautify modify ...

随机推荐

  1. 冒泡排序,sql分页语句

    对数组中的数字进行排序 public int[] PopSmall(int[] IntArray) { ; ; i < IntArray.Length - ; i++) { ; j < I ...

  2. .html()和.text()的区别

    在页面调用接口显示数据的时候,正常情况下.html()和.text()都可以显示数据内容,但是在特殊情况下,比如接口中这个参数为空的时候就表现出差距了,.html()显示的是空白,而.text()显示 ...

  3. xampp 配置虚拟主机

    1.安装好xampp后 2.找到安装目录 apache目录--conf目录--extra目录--httpd-vhosts.conf文件(用记事本或者别的编辑器打开) 文件最后添加代码 <Virt ...

  4. js 页面刷新方法

    1.reload方法,该方法强迫浏览器刷新当前页面语法:location.reload([bForceGet])参数:bForceGet,可选参数,默认为false从客户端缓存里取当前页.true,则 ...

  5. jquery操作复选框(checkbox)的12个小技巧总结

    1.获取单个checkbox选中项(三种写法)$("input:checkbox:checked").val()或者$("input:[type='checkbox']: ...

  6. 三剑客之SED

    Sed功能说明      Sed是Strem Editor(流编辑器)缩写,是操作.过滤和转换文本内容的强大工具.常用功能有增删改查,过滤,取行. [root@old ~]# sed --versio ...

  7. 用JS实现九九乘法表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 【转载-pdcxs007】 Windows7配置CTex+Texmaker

    !! 安装CTex会覆盖系统原来的环境变量里面的系统路径!! 坑人! Windows7配置CTex+Texmaker CTex和Texmaker的下载方法就不必细谈了,在官方网站上有.主要是CTex建 ...

  9. android入门:第一天

    android是什么? 是一个基于linux开源的操作系统,主要适用于智能设备,如智能手机,平板,智能电视,智能手表,谷歌眼镜,智能家居,由google开发,2008年开发出第一个版本 android ...

  10. linux下dos环境和unix环境转换

    DOS转UNIX::setfileformat=unix UNIX转DOS::setfileformat=dos and :set ff=unix