/* * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved. * SPDX-License-Identifier: GPL-3.0-only */ plugins { id 'kotlin-android' } final def keystorePropertiesFile = rootProject.file 'keystore.properties' 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-${variant.getFlavorName()}_${defaultConfig.versionName}.apk" } } } buildFeatures.viewBinding = true defaultConfig { applicationId 'dev.msfjarvis.aps' versionCode 11030 versionName '1.10.3' } 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 '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 } flavorDimensions "free" productFlavors { free { versionNameSuffix "-free" } nonFree { } } } dependencies { implementation deps.androidx.activity_ktx implementation deps.androidx.annotation implementation deps.androidx.autofill implementation deps.androidx.appcompat implementation deps.androidx.biometric implementation deps.androidx.constraint_layout implementation deps.androidx.core_ktx implementation deps.androidx.documentfile implementation deps.androidx.fragment_ktx implementation deps.androidx.lifecycle_common implementation deps.androidx.lifecycle_livedata_ktx implementation deps.androidx.lifecycle_viewmodel_ktx implementation deps.androidx.material implementation deps.androidx.preference implementation deps.androidx.recycler_view implementation deps.androidx.recycler_view_selection implementation deps.androidx.security implementation deps.androidx.swiperefreshlayout implementation deps.kotlin.coroutines.android implementation deps.kotlin.coroutines.core implementation deps.first_party.openpgp_ktx implementation deps.first_party.zxing_android_embedded 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.sshj implementation deps.third_party.bouncycastle implementation deps.third_party.plumber implementation deps.third_party.ssh_auth implementation deps.third_party.timber implementation deps.third_party.timberkt if (isSnapshot()) { implementation deps.third_party.leakcanary implementation deps.third_party.whatthestack } else { debugImplementation deps.third_party.leakcanary debugImplementation deps.third_party.whatthestack } nonFreeImplementation deps.non_free.google_play_auth_api_phone // Testing-only dependencies androidTestImplementation deps.testing.junit androidTestImplementation deps.testing.kotlin_test_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 testImplementation deps.testing.junit testImplementation deps.testing.kotlin_test_junit }