本文的书写已经是很早之前的事情了,只是把从新排版发了出来,有部分内网资源以及找不到了,有兴趣的同学可以根据原理补充上部分缺失的脚本。
覆盖率统计说明
由于这段很重要,特此在最前面的章节说明。
在多项目工程中(dolphin和topnews都是多项目工程),按照本文的方法仅能统计主工程的代码覆盖率,无法统计库工程的代码覆盖率,如需统计库工程的覆盖率请参考在多项目工程中统计子工程的覆盖率
Gradle
Gradle简介
Gradle是一个开源的,以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具,提供了强大的,可传递的依赖管理系统,目前的Dolphin和其他衍生产品都是使用Gradle进行编译的,他的官网地址为:http://www.gradle.org
Gradle环境搭建
Gradle的版本在一直不停的更新中,截至发稿日期止,最新的版本是2.3。不同的Gralde版本在个别语法定义上会稍有不同(如代码混淆2.1之前的版本为runProguard true,在之后的版本为minifyEnabled true),在搭建编译环境中最好和项目推荐的版本保持一致。
Gradle环境的搭建很简单,在官网下载对应版本的ZIP文件后解压缩,然后将bin目录加到环境变量中或者将gradle软链接到~/bin下即可
* 将bin目录加到环境变量:用文本编辑器或者VIM等工具打开~/.bashrc文件,在最后加上如下的内容即可
export PATH=<bin目录的绝对路径>:$PATH
* 将gradle软链到~/bin目录下:
ln -s <bin目录下gradle文件的绝对路径> ~/bin/gradle
Gradle脚本简介
以下是一个简单的Gradle脚本:
apply plugin: 'android'
apply plugin: "jacoco"
apply from: "$project.rootDir/DolphinBuild/common.gradle"
gradle.beforeProject { project ->
if (project.file('build.gradle').exists()) {
project.buildscript {
repositories {
maven {
name = "Baina Maven Proxy"
url = "http://mirrors.baina.com:8080/archiva/repository/internal"
}
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.+'
}
}
}
}
android {
// update sdk version to 21, because some variables of LOLLIPOP are used
compileSdkVersion 21
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('$project.rootDir/DolphinRecordTest')
androidTest {
manifest.srcFile "$project.rootDir/DolphinRecordTest/AndroidManifest.xml"
java.srcDir