bebe434683
Adds support for the Autofill feature first available in Android Oreo. In compatible apps and browsers, login forms are automatically detected and the user is presented with options to fill or generate credentials. In most apps and certain browsers, the service will also offer to create new Password Store entries from credentials entered into login forms. Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
124 lines
4.1 KiB
Groovy
124 lines
4.1 KiB
Groovy
/*
|
|
* 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.constraint_layout
|
|
implementation deps.androidx.core_ktx
|
|
implementation deps.androidx.documentfile
|
|
implementation deps.androidx.lifecycle_runtime_ktx
|
|
implementation deps.androidx.local_broadcast_manager
|
|
implementation deps.androidx.material
|
|
implementation deps.androidx.preference
|
|
implementation deps.androidx.swiperefreshlayout
|
|
implementation(deps.androidx.recycler_view)
|
|
|
|
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.publicsuffixlist
|
|
implementation deps.third_party.recyclical
|
|
implementation deps.third_party.ssh_auth
|
|
implementation deps.third_party.timber
|
|
implementation deps.third_party.timberkt
|
|
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
|
|
}
|