140 lines
3.9 KiB
Groovy
140 lines
3.9 KiB
Groovy
import groovy.xml.XmlUtil
|
|
|
|
plugins {
|
|
id "com.android.application"
|
|
id "kotlin-android"
|
|
id "org.jlleitschuh.gradle.ktlint" version "9.4.0"
|
|
}
|
|
|
|
def gitDescribe = { ->
|
|
def stdout = new ByteArrayOutputStream()
|
|
exec {
|
|
commandLine 'git', 'describe', '--always', '--tags', '--dirty=-dirty'
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().trim()
|
|
}
|
|
|
|
android {
|
|
|
|
compileSdkVersion 30
|
|
buildToolsVersion '30.0.2' // adapt in .travis.yaml if changed here
|
|
|
|
defaultConfig {
|
|
minSdkVersion 29 // leave at 29 for robolectric tests
|
|
targetSdkVersion 30
|
|
versionNameSuffix "-$gitDescribe"
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
testInstrumentationRunnerArguments disableAnalytics: 'true'
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
minifyEnabled false
|
|
}
|
|
}
|
|
|
|
lintOptions {
|
|
disable "CheckedExceptions"
|
|
abortOnError true
|
|
}
|
|
compileOptions {
|
|
targetCompatibility 1.8
|
|
sourceCompatibility 1.8
|
|
}
|
|
kotlinOptions {
|
|
jvmTarget = JavaVersion.VERSION_1_8.toString()
|
|
}
|
|
testOptions {
|
|
unitTests.all {
|
|
useJUnitPlatform()
|
|
testLogging {
|
|
events "passed", "skipped", "failed"
|
|
}
|
|
}
|
|
unitTests {
|
|
includeAndroidResources = true
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
test {
|
|
java.srcDirs += "$projectDir/src/sharedTest/java"
|
|
}
|
|
androidTest {
|
|
java.srcDirs += "$projectDir/src/sharedTest/java"
|
|
}
|
|
}
|
|
|
|
// optional signingConfigs
|
|
def keystorePropertiesFile = rootProject.file("keystore.properties")
|
|
if (keystorePropertiesFile.exists()) {
|
|
def keystoreProperties = new Properties()
|
|
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
|
|
|
signingConfigs {
|
|
release {
|
|
keyAlias keystoreProperties['keyAlias']
|
|
keyPassword keystoreProperties['keyPassword']
|
|
storeFile file(keystoreProperties['storeFile'])
|
|
storePassword keystoreProperties['storePassword']
|
|
}
|
|
}
|
|
buildTypes.release.signingConfig = signingConfigs.release
|
|
buildTypes.debug.signingConfig = signingConfigs.release
|
|
}
|
|
}
|
|
|
|
apply from: '../gradle/dependencies.gradle'
|
|
|
|
ktlint {
|
|
version = "0.36.0" // https://github.com/pinterest/ktlint/issues/764
|
|
android = true
|
|
enableExperimentalRules = false
|
|
verbose = true
|
|
disabledRules = [
|
|
"import-ordering",
|
|
"no-blank-line-before-rbrace",
|
|
]
|
|
}
|
|
|
|
gradle.projectsEvaluated {
|
|
tasks.withType(JavaCompile) {
|
|
if (JavaVersion.current() >= JavaVersion.VERSION_1_9) {
|
|
options.compilerArgs.addAll(['--release', '8'])
|
|
}
|
|
options.compilerArgs.add('-Xbootclasspath/p:app/libs/android.jar:app/libs/libcore.jar')
|
|
}
|
|
}
|
|
|
|
// http://www.31mins.com/android-studio-build-system-application/
|
|
preBuild.doLast {
|
|
def imlFile = file(project.name + ".iml")
|
|
|
|
try {
|
|
def parsedXml = (new XmlParser()).parse(imlFile)
|
|
def jdkNode = parsedXml.component[1].orderEntry.find { it.'@type' == 'jdk' }
|
|
parsedXml.component[1].remove(jdkNode)
|
|
|
|
def apiString = android.compileSdkVersion.substring("android-".length())
|
|
def sdkString = "Android API " + apiString + " Platform"
|
|
//noinspection GroovyResultOfObjectAllocationIgnored // the note gets inserted
|
|
new Node(parsedXml.component[1], 'orderEntry', [
|
|
'type' : 'jdk',
|
|
'jdkName': sdkString,
|
|
'jdkType': 'Android SDK'
|
|
])
|
|
XmlUtil.serialize(parsedXml, new FileOutputStream(imlFile))
|
|
|
|
} catch (NullPointerException | FileNotFoundException ex) {
|
|
ex.printStackTrace()
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
all {
|
|
resolutionStrategy {
|
|
failOnNonReproducibleResolution()
|
|
}
|
|
}
|
|
}
|