aboutsummaryrefslogtreecommitdiffstats
path: root/app/build.gradle
blob: deb98177480d006c75277a164f495b816aca5858 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
apply plugin: 'android-sdk-manager'
apply plugin: 'com.android.application'
apply plugin: 'com.github.kt3k.coveralls'
apply from: '../config/quality.gradle'
apply from: '../config/translations.gradle'

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1x'
    }
}

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "org.connectbot"
        minSdkVersion 4
        targetSdkVersion 22
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_5
            targetCompatibility JavaVersion.VERSION_1_5
        }

        ndk {
            moduleName "com_google_ase_Exec"
            ldLibs "log"
        }

        lintOptions {
            abortOnError false
            lintConfig file('lint.xml')
        }

        testApplicationId "org.connectbot.tests"
        testInstrumentationRunner "android.test.InstrumentationTestRunner"
    }

    signingConfigs {
        release
    }

    dependencies {
        compile "com.android.support:support-v4:22.0.+"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg'

            if (project.hasProperty('keystorePassword')) {
                signingConfig signingConfigs.release
            }
        }

        debug {
            applicationIdSuffix ".debug"
            testCoverageEnabled true
        }
    }
}

apply plugin: 'jacoco'

// By default, Android Gradle plugin uses JaCoCo version 0.7.1, which works great in JUnit on the JVM.
// But that will fail on Android Lollipop/ART runtime, which requires 0.7.3 or higher.
if (rootProject.hasProperty('jacocoVersion')) {
    android.jacoco.version = rootProject.property('jacocoVersion')
    jacoco.toolVersion = rootProject.property('jacocoVersion')
} else {
    println "Using the default JaCoCo version of: ${jacoco.toolVersion}"
}

// The built-in jacoco plugin automatically applies itself to all Test tasks
tasks.withType(Test).whenTaskAdded {
    it.jacoco.append = false
    it.jacoco.classDumpFile = file("${project.buildDir}/jacoco/dump")
}

// These tasks are for generating the coverage report after JUnit+robolectric tests have executed
tasks.create(name: "jacocoTestDebugReport", type: JacocoReport, dependsOn: "testDebug") {
    group = "Reporting"
    description = "Generate Jacoco coverage reports"

    classDirectories = fileTree(
            dir: "${project.buildDir}/intermediates/classes/debug/",
            excludes: ['**/R.class',
                       '**/R$*.class',
                       '**/*$ViewInjector*.*',
                       '**/BuildConfig.*',
                       '**/Manifest*.*']
    )

    sourceDirectories = files("src/main/java", "src/debug/java")
    executionData = files("${project.buildDir}/jacoco/testDebug.exec")

    reports {
        xml.enabled = true
        html.enabled = true
    }
}

coveralls.jacocoReportPath = "${project.buildDir}/reports/jacoco/jacocoTestDebugReport/jacocoTestDebugReport.xml"

dependencies {
    testCompile 'junit:junit:4.12'
    testCompile('org.robolectric:robolectric:3.0') {
        exclude group: 'commons-logging', module: 'commons-logging'
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'
    }
}

if (project.hasProperty('keystorePassword')) {
    android.signingConfigs.release.storeFile file(keystoreFile)
    android.signingConfigs.release.storePassword keystorePassword
    android.signingConfigs.release.keyAlias keystoreAlias
    android.signingConfigs.release.keyPassword keystorePassword
}