boinc/android/BOINC/app/build.gradle

129 lines
4.0 KiB
Groovy
Raw Normal View History

plugins {
id 'org.ajoberstar.grgit' version '4.0.2'
id 'com.palantir.git-version' version '0.12.3'
}
apply plugin: 'com.android.application'
2020-03-25 06:30:22 +00:00
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
import org.ajoberstar.grgit.Grgit
// Use commit date as version code (valid up to 07/18/2036)
def buildVersionCode() {
def repo = Grgit.open()
def head = repo.head()
// Sanity check across git plugins
assert head.getAbbreviatedId(10) == versionDetails().gitHash: "Internal error: SHA1 mismatch!"
return head.time
}
// Derive version name from release tag and add commit SHA1
def buildVersionName() {
def pattern = /client_release\/\d+\.\d+\/(?<major>\d+)\.(?<minor>\d+)\.(?<revision>\d+)(?<suffix>[-_\.]?.*)/
def version = ': DEVELOPMENT'
def head = versionDetails()
def tag = head.lastTag
def match = (tag =~ pattern)
// Sanity checks for tag format
if (match.hasGroup() && 1L == match.size() && 5L == match[0].size() && head.commitDistance == 0) {
def major = match.group('major')
def minor = match.group('minor')
def revision = match.group('revision')
def suffix = match.group('suffix')
version = "${major}.${minor}.${revision}${suffix}"
assert !suffix.endsWith('.dirty'): "Dirty working tree detected! Preventing release build!"
} else {
println "Warning! Non-release tag or offset found: $tag (offset: $head.commitDistance)"
println "Flagging as DEVELOPMENT build..."
}
def commit = versionDetails().gitHash
return "${version} (${commit})"
}
android {
compileSdkVersion 29
buildToolsVersion '29.0.3'
defaultConfig {
applicationId "edu.berkeley.boinc"
minSdkVersion 19
targetSdkVersion 29
versionCode buildVersionCode().toInteger()
versionName buildVersionName()
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
2016-11-09 17:36:50 +00:00
debug {
// Without this, a build error occurs for debug.
minifyEnabled true
2016-11-09 17:36:50 +00:00
debuggable true
testCoverageEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
2016-11-09 17:36:50 +00:00
}
}
2020-03-14 00:10:15 +00:00
compileOptions {
sourceCompatibility '1.8'
targetCompatibility '1.8'
}
2020-04-21 23:21:30 +00:00
kotlinOptions {
jvmTarget = '1.8'
}
2020-04-04 11:17:44 +00:00
packagingOptions {
exclude 'LICENSE-EPL-1.0.txt'
exclude 'LICENSE-EDL-1.0.txt'
}
testOptions {
2020-04-28 01:59:40 +00:00
unitTests {
includeAndroidResources = true
all {
useJUnitPlatform()
}
}
}
tasks.withType(Test) {
testLogging {
events "passed", "skipped", "failed"
}
}
}
ext {
powermock_version = '2.0.5'
junit5_version = '5.6.2'
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.core:core-ktx:1.2.0'
implementation 'commons-io:commons-io:2.6'
implementation 'org.apache.commons:commons-lang3:3.10'
2020-03-25 06:30:22 +00:00
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
2020-04-04 11:17:44 +00:00
2020-04-28 01:59:40 +00:00
testImplementation 'androidx.test:core:1.2.0'
testImplementation 'com.google.guava:guava-testlib:28.2-jre'
testImplementation 'junit:junit:4.13'
testImplementation "org.junit.jupiter:junit-jupiter-api:$junit5_version"
testImplementation "org.junit.jupiter:junit-jupiter-params:$junit5_version"
testImplementation "org.powermock:powermock-module-junit4:$powermock_version"
testImplementation "org.powermock:powermock-api-mockito2:$powermock_version"
2020-04-28 01:59:40 +00:00
testImplementation 'org.robolectric:robolectric:4.3.1'
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit5_version"
testRuntimeOnly "org.junit.vintage:junit-vintage-engine:$junit5_version"
}
2020-03-25 06:30:22 +00:00
repositories {
mavenCentral()
}