/* * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved. * SPDX-License-Identifier: GPL-3.0-only */ plugins { id 'kotlin-android' id 'kotlin-android-extensions' } final def keystorePropertiesFile = rootProject.file 'keystore.properties' final def gitHash = { -> final def stdout = new ByteArrayOutputStream() exec { commandLine 'git', 'describe', '--tags' standardOutput = stdout } stdout.toString().trim() } static final def isSnapshot() { return System.env['GITHUB_WORKFLOW'] != null && System.env['SNAPSHOT'] != null } android { if (isSnapshot()) { android.applicationVariants.all { final variant -> variant.outputs.all { outputFileName = "aps_${versions.versionName}.apk" } } } defaultConfig { applicationId versions.packageName } lintOptions { abortOnError = true // make sure build fails with lint errors! disable 'MissingTranslation', 'PluralsCandidate' } packagingOptions { exclude '.readme' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } buildTypes { release { minifyEnabled = true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' buildConfigField 'boolean', 'ENABLE_DEBUG_FEATURES', isSnapshot() ? 'true' : 'false' } debug { applicationIdSuffix = '.debug' versionNameSuffix = '-debug' minifyEnabled = false buildConfigField 'boolean', 'ENABLE_DEBUG_FEATURES', 'true' } } if (keystorePropertiesFile.exists()) { final def keystoreProperties = new Properties() keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) signingConfigs { release { keyAlias = keystoreProperties['keyAlias'] keyPassword = keystoreProperties['keyPassword'] storeFile = rootProject.file keystoreProperties['storeFile'] storePassword = keystoreProperties['storePassword'] } } buildTypes.release.signingConfig = signingConfigs.release buildTypes.debug.signingConfig = signingConfigs.release } } dependencies { implementation deps.androidx.annotation implementation deps.androidx.appcompat implementation deps.androidx.biometric implementation deps.androidx.core_ktx implementation deps.androidx.constraint_layout implementation deps.androidx.documentfile implementation deps.androidx.preference constraints { implementation(deps.androidx.recycler_view) { because 'versions above 1.0.0 have an accessibility related bug that causes crashes' } } implementation deps.androidx.material implementation deps.kotlin.coroutines.android implementation deps.kotlin.coroutines.core implementation deps.third_party.commons_io implementation deps.third_party.commons_codec implementation deps.third_party.fastscroll implementation(deps.third_party.jgit) { exclude group: 'org.apache.httpcomponents', module: 'httpclient' } implementation deps.third_party.jsch implementation deps.third_party.openpgp_ktx implementation deps.third_party.ssh_auth implementation deps.third_party.timber implementation deps.third_party.whatthestack if (isSnapshot()) { implementation deps.third_party.leakcanary } else { debugImplementation deps.third_party.leakcanary } // Testing-only dependencies androidTestImplementation deps.testing.junit androidTestImplementation deps.testing.androidx.runner androidTestImplementation deps.testing.androidx.rules androidTestImplementation deps.testing.androidx.junit androidTestImplementation deps.testing.androidx.espresso_core androidTestImplementation deps.testing.androidx.espresso_intents }