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' apply from: '../config/jacoco.gradle' ext { supportLibraryVersion = '23.1.0' testRunnerVersion = '0.3' espressoVersion = '2.2' } buildscript { repositories { jcenter() } dependencies { classpath 'org.kt3k.gradle.plugin:coveralls-gradle-plugin:2.0.1x' classpath 'com.android.tools.build:gradle:1.4.0-beta3' classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.0' } } dependencies { compile 'org.connectbot:sshlib:2.2.1' testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.19' testCompile 'org.assertj:assertj-core:1.7.0' testCompile('org.robolectric:robolectric:3.0') { exclude group: 'commons-logging', module: 'commons-logging' exclude group: 'org.apache.httpcomponents', module: 'httpclient' } } android { compileSdkVersion 23 buildToolsVersion "22.0.1" defaultConfig { applicationId "org.connectbot" minSdkVersion 8 targetSdkVersion 23 ndk { moduleName "com_google_ase_Exec" ldLibs "log" } testApplicationId "org.connectbot.tests" testInstrumentationRunner "org.connectbot.FixJacocoTestRunner" } signingConfigs { if (project.hasProperty('keystorePassword')) { release { storeFile file(property('keystoreFile')) storePassword property('keystorePassword') keyAlias property('keystoreAlias') keyPassword property('keystorePassword') } } } dependencies { compile "com.android.support:recyclerview-v7:$supportLibraryVersion" compile "com.android.support:support-v4:$supportLibraryVersion" compile "com.android.support:appcompat-v7:$supportLibraryVersion" compile "com.android.support:design:$supportLibraryVersion" androidTestCompile("com.android.support.test:runner:$testRunnerVersion") { exclude module: "support-annotations" } androidTestCompile("com.android.support.test:rules:$testRunnerVersion") { exclude module: "support-annotations" } androidTestCompile("com.android.support.test.espresso:espresso-core:$espressoVersion") { exclude module: "support-annotations" } androidTestCompile("com.android.support.test.espresso:espresso-intents:$espressoVersion") { exclude module: "support-annotations" } androidTestCompile("com.android.support.test.espresso:espresso-contrib:$espressoVersion") { exclude module: 'support-annotations' exclude module: 'support-v4' exclude module: 'support-v13' exclude module: 'recyclerview-v7' } } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' if (project.hasProperty('keystorePassword')) { //noinspection GroovyAssignabilityCheck signingConfig signingConfigs.release } return true // this silences Android Studio's groovy inspector } debug { applicationIdSuffix ".debug" testCoverageEnabled true } } lintOptions { abortOnError false lintConfig file('lint.xml') } packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'LICENSE.txt' } } def getGitDescription = { -> try { def stdout = new ByteArrayOutputStream() exec { commandLine 'git', 'describe', '--dirty' standardOutput = stdout } return stdout.toString().trim() } catch (ignored) { return null; } } // Insert the build number into strings.xml android.applicationVariants.all { variant -> variant.mergeResources.doLast{ ext.env = System.getenv() def buildNumber = getGitDescription() if (buildNumber != null) { File valuesFile = file("${buildDir}/intermediates/res/merged/${variant.dirName}/values/values.xml") String content = valuesFile.getText('UTF-8') content = content.replaceAll(/\(working copy\)/, buildNumber) valuesFile.write(content, 'UTF-8') } } }