Revamp build configuration (#1156)
* release: move scripts to scripts directory Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Move CI secrets to secrets directory Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * gradle: uprev to 6.7 Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * gradle: suppress warnings about unsupported options Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * build: update dependencies Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * build: move Gradle plugins to ext Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * build: move configuration tasks to buildSrc Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * CHANGELOG: add entry for #1137 Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Fix lint warnings Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
92f1aab25d
commit
6c1e41ba10
24 changed files with 222 additions and 97 deletions
6
.github/workflows/deploy_snapshot.yml
vendored
6
.github/workflows/deploy_snapshot.yml
vendored
|
@ -13,7 +13,7 @@ jobs:
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Decrypt secrets
|
- name: Decrypt secrets
|
||||||
run: release/signing-setup.sh "$ENCRYPT_KEY"
|
run: scripts/signing-setup.sh "$ENCRYPT_KEY"
|
||||||
env:
|
env:
|
||||||
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
|
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
|
||||||
|
|
||||||
|
@ -28,10 +28,10 @@ jobs:
|
||||||
arguments: :app:assembleFreeRelease :app:assembleNonFreeRelease
|
arguments: :app:assembleFreeRelease :app:assembleNonFreeRelease
|
||||||
|
|
||||||
- name: Clean secrets
|
- name: Clean secrets
|
||||||
run: release/signing-cleanup.sh
|
run: scripts/signing-cleanup.sh
|
||||||
|
|
||||||
- name: Deploy snapshot
|
- name: Deploy snapshot
|
||||||
run: release/deploy-snapshot.sh
|
run: scripts/deploy-snapshot.sh
|
||||||
env:
|
env:
|
||||||
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||||
SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
|
SSH_USERNAME: ${{ secrets.SSH_USERNAME }}
|
||||||
|
|
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
|
@ -13,7 +13,7 @@ jobs:
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Decrypt secrets
|
- name: Decrypt secrets
|
||||||
run: release/signing-setup.sh "$ENCRYPT_KEY"
|
run: scripts/signing-setup.sh "$ENCRYPT_KEY"
|
||||||
env:
|
env:
|
||||||
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
|
ENCRYPT_KEY: ${{ secrets.ENCRYPT_KEY }}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ jobs:
|
||||||
|
|
||||||
- name: Clean secrets
|
- name: Clean secrets
|
||||||
if: always()
|
if: always()
|
||||||
run: release/signing-cleanup.sh
|
run: scripts/signing-cleanup.sh
|
||||||
|
|
||||||
create_github_release:
|
create_github_release:
|
||||||
name: Create GitHub Release
|
name: Create GitHub Release
|
||||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
# Created by https://www.gitignore.io/api/androidstudio,gradle
|
# Created by https://www.gitignore.io/api/androidstudio,gradle
|
||||||
# Edit at https://www.gitignore.io/?templates=androidstudio,gradle
|
# Edit at https://www.gitignore.io/?templates=androidstudio,gradle
|
||||||
|
|
||||||
|
@ -44,7 +43,7 @@ out/
|
||||||
|
|
||||||
# Signing files
|
# Signing files
|
||||||
.signing/
|
.signing/
|
||||||
keystore.*
|
/keystore.*
|
||||||
|
|
||||||
# Local configuration file (sdk path, etc)
|
# Local configuration file (sdk path, etc)
|
||||||
local.properties
|
local.properties
|
||||||
|
|
|
@ -14,6 +14,7 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
- Add GPG key selection step to onboarding flow
|
- Add GPG key selection step to onboarding flow
|
||||||
- Allow configuring an app-wide HTTP(S) proxy
|
- Allow configuring an app-wide HTTP(S) proxy
|
||||||
|
- Add option to automatically sync repository on app launch
|
||||||
|
|
||||||
## [1.12.1] - 2020-10-13
|
## [1.12.1] - 2020-10-13
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,9 @@ import com.android.build.gradle.internal.api.BaseVariantOutputImpl
|
||||||
import java.util.Properties
|
import java.util.Properties
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
|
id("com.android.application")
|
||||||
kotlin("android")
|
kotlin("android")
|
||||||
|
`aps-plugin`
|
||||||
}
|
}
|
||||||
|
|
||||||
val keystorePropertiesFile = rootProject.file("keystore.properties")
|
val keystorePropertiesFile = rootProject.file("keystore.properties")
|
||||||
|
@ -26,13 +28,16 @@ android {
|
||||||
|
|
||||||
adbOptions.installOptions("--user 0")
|
adbOptions.installOptions("--user 0")
|
||||||
|
|
||||||
buildFeatures.viewBinding = true
|
buildFeatures {
|
||||||
buildFeatures.buildConfig = true
|
viewBinding = true
|
||||||
|
buildConfig = true
|
||||||
|
}
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "dev.msfjarvis.aps"
|
applicationId = "dev.msfjarvis.aps"
|
||||||
versionCode = 11211
|
versionCode = 11211
|
||||||
versionName = "1.13.0-SNAPSHOT"
|
versionName = "1.13.0-SNAPSHOT"
|
||||||
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
|
@ -41,13 +46,6 @@ android {
|
||||||
disable("MissingTranslation", "PluralsCandidate", "ImpliedQuantity")
|
disable("MissingTranslation", "PluralsCandidate", "ImpliedQuantity")
|
||||||
}
|
}
|
||||||
|
|
||||||
packagingOptions {
|
|
||||||
exclude("**/*.version")
|
|
||||||
exclude("**/*.txt")
|
|
||||||
exclude("**/*.kotlin_module")
|
|
||||||
exclude("**/plugin.properties")
|
|
||||||
}
|
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
named("release") {
|
named("release") {
|
||||||
isMinifyEnabled = true
|
isMinifyEnabled = true
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
@ -22,7 +23,7 @@
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
android:maxWidth="20dp"
|
android:maxWidth="20dp"
|
||||||
android:maxHeight="20dp"
|
android:maxHeight="20dp"
|
||||||
android:tint="@color/secondary_color"
|
app:tint="@color/secondary_color"
|
||||||
tools:src="@mipmap/ic_launcher" />
|
tools:src="@mipmap/ic_launcher" />
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
|
|
@ -19,12 +19,12 @@
|
||||||
android:layout_marginStart="8dp"
|
android:layout_marginStart="8dp"
|
||||||
android:alpha="0.5"
|
android:alpha="0.5"
|
||||||
android:src="@drawable/ic_person_black_24dp"
|
android:src="@drawable/ic_person_black_24dp"
|
||||||
android:tint="?colorOnPrimary"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@id/title"
|
app:layout_constraintEnd_toStartOf="@id/title"
|
||||||
app:layout_constraintHorizontal_bias="0.0"
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:tint="?colorOnPrimary" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/title"
|
android:id="@+id/title"
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("android")
|
id("com.android.library")
|
||||||
id("maven-publish")
|
id("maven-publish")
|
||||||
|
kotlin("android")
|
||||||
|
`aps-plugin`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Type safety can sometimes suck
|
// Type safety can sometimes suck
|
||||||
|
|
|
@ -2,11 +2,9 @@
|
||||||
* Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
|
* Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
|
||||||
* SPDX-License-Identifier: GPL-3.0-only
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
*/
|
*/
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
|
||||||
import com.android.build.gradle.BaseExtension
|
|
||||||
import kotlinx.validation.ApiValidationExtension
|
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
|
apply(from = "buildSrc/buildDependencies.gradle")
|
||||||
|
val build: Map<Any, Any> by extra
|
||||||
repositories {
|
repositories {
|
||||||
google()
|
google()
|
||||||
jcenter()
|
jcenter()
|
||||||
|
@ -14,64 +12,14 @@ buildscript {
|
||||||
maven { url = uri("https://kotlin.bintray.com/kotlinx") }
|
maven { url = uri("https://kotlin.bintray.com/kotlinx") }
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath(Plugins.agp)
|
classpath(build.getValue("androidGradlePlugin"))
|
||||||
classpath(Plugins.binaryCompatibilityValidator)
|
classpath(build.getValue("binaryCompatibilityValidator"))
|
||||||
classpath(Plugins.kotlin)
|
classpath(build.getValue("kotlinGradlePlugin"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("com.github.ben-manes.versions") version "0.33.0"
|
id("com.github.ben-manes.versions") version "0.33.0"
|
||||||
}
|
`binary-compatibility-validator`
|
||||||
|
`aps-plugin`
|
||||||
apply(plugin = "binary-compatibility-validator")
|
|
||||||
|
|
||||||
extensions.configure<ApiValidationExtension> {
|
|
||||||
ignoredProjects = mutableSetOf(
|
|
||||||
"app"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
subprojects {
|
|
||||||
repositories {
|
|
||||||
google()
|
|
||||||
jcenter()
|
|
||||||
maven {
|
|
||||||
setUrl("https://jitpack.io")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (name == "app") {
|
|
||||||
apply(plugin = "com.android.application")
|
|
||||||
} else {
|
|
||||||
apply(plugin = "com.android.library")
|
|
||||||
}
|
|
||||||
configure<BaseExtension> {
|
|
||||||
compileSdkVersion(29)
|
|
||||||
defaultConfig {
|
|
||||||
minSdkVersion(23)
|
|
||||||
targetSdkVersion(29)
|
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
||||||
}
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
|
||||||
}
|
|
||||||
tasks.withType<JavaCompile> {
|
|
||||||
options.compilerArgs.add("-Xlint:unchecked")
|
|
||||||
options.isDeprecation = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
tasks.withType<KotlinCompile> {
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = "1.8"
|
|
||||||
freeCompilerArgs = listOf("-Xopt-in=kotlin.RequiresOptIn", "-Xallow-result-return-type")
|
|
||||||
languageVersion = "1.4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.wrapper {
|
|
||||||
gradleVersion = "6.6.1"
|
|
||||||
distributionType = Wrapper.DistributionType.ALL
|
|
||||||
distributionSha256Sum = "11657af6356b7587bfb37287b5992e94a9686d5c8a0a1b60b87b9928a2decde5"
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,30 @@
|
||||||
|
apply(from = "buildDependencies.gradle")
|
||||||
|
val build: Map<Any, Any> by extra
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
`kotlin-dsl`
|
`kotlin-dsl`
|
||||||
}
|
}
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
google()
|
||||||
|
gradlePluginPortal()
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlinDslPluginOptions {
|
kotlinDslPluginOptions {
|
||||||
experimentalWarning.set(false)
|
experimentalWarning.set(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gradlePlugin {
|
||||||
|
plugins {
|
||||||
|
register("aps") {
|
||||||
|
id = "aps-plugin"
|
||||||
|
implementationClass = "PasswordStorePlugin"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(build.getValue("kotlinGradlePlugin"))
|
||||||
|
implementation(build.getValue("androidGradlePlugin"))
|
||||||
|
implementation(build.getValue("binaryCompatibilityValidator"))
|
||||||
|
}
|
||||||
|
|
11
buildSrc/buildDependencies.gradle
Normal file
11
buildSrc/buildDependencies.gradle
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
rootProject.ext.versions = [
|
||||||
|
agp : '4.1.0',
|
||||||
|
kotlin : '1.4.10',
|
||||||
|
binary_compatibility_validator : '0.2.3',
|
||||||
|
]
|
||||||
|
|
||||||
|
rootProject.ext.build = [
|
||||||
|
androidGradlePlugin : "com.android.tools.build:gradle:${versions.agp}",
|
||||||
|
kotlinGradlePlugin : "org.jetbrains.kotlin:kotlin-gradle-plugin:${versions.kotlin}",
|
||||||
|
binaryCompatibilityValidator : "org.jetbrains.kotlinx:binary-compatibility-validator:${versions.binary_compatibility_validator}",
|
||||||
|
]
|
83
buildSrc/src/main/java/BaseProjectConfig.kt
Normal file
83
buildSrc/src/main/java/BaseProjectConfig.kt
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
/*
|
||||||
|
* Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.android.build.gradle.TestedExtension
|
||||||
|
import org.gradle.api.JavaVersion
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.tasks.Delete
|
||||||
|
import org.gradle.api.tasks.testing.Test
|
||||||
|
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
||||||
|
import org.gradle.api.tasks.wrapper.Wrapper
|
||||||
|
import org.gradle.kotlin.dsl.repositories
|
||||||
|
import org.gradle.kotlin.dsl.withType
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure root project.
|
||||||
|
* Note that classpath dependencies still need to be defined in the `buildscript` block in the top-level build.gradle.kts file.
|
||||||
|
*/
|
||||||
|
internal fun Project.configureForRootProject() {
|
||||||
|
// register task for cleaning the build directory in the root project
|
||||||
|
tasks.register("clean", Delete::class.java) {
|
||||||
|
delete(rootProject.buildDir)
|
||||||
|
}
|
||||||
|
tasks.withType<Wrapper> {
|
||||||
|
gradleVersion = "6.7"
|
||||||
|
distributionType = Wrapper.DistributionType.ALL
|
||||||
|
distributionSha256Sum = "0080de8491f0918e4f529a6db6820fa0b9e818ee2386117f4394f95feb1d5583"
|
||||||
|
}
|
||||||
|
configureBinaryCompatibilityValidator()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure all projects including the root project
|
||||||
|
*/
|
||||||
|
internal fun Project.configureForAllProjects() {
|
||||||
|
repositories {
|
||||||
|
google()
|
||||||
|
jcenter()
|
||||||
|
maven { setUrl("https://jitpack.io") }
|
||||||
|
}
|
||||||
|
tasks.withType<KotlinCompile> {
|
||||||
|
kotlinOptions {
|
||||||
|
jvmTarget = JavaVersion.VERSION_1_8.toString()
|
||||||
|
freeCompilerArgs = freeCompilerArgs + additionalCompilerArgs
|
||||||
|
languageVersion = "1.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tasks.withType<Test> {
|
||||||
|
maxParallelForks = Runtime.getRuntime().availableProcessors() * 2
|
||||||
|
testLogging {
|
||||||
|
events(TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply baseline configurations for all Android projects (Application and Library).
|
||||||
|
*/
|
||||||
|
@Suppress("UnstableApiUsage")
|
||||||
|
internal fun TestedExtension.configureCommonAndroidOptions() {
|
||||||
|
compileSdkVersion(29)
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
minSdkVersion(23)
|
||||||
|
targetSdkVersion(29)
|
||||||
|
}
|
||||||
|
|
||||||
|
packagingOptions {
|
||||||
|
exclude("**/*.version")
|
||||||
|
exclude("**/*.txt")
|
||||||
|
exclude("**/*.kotlin_module")
|
||||||
|
exclude("**/plugin.properties")
|
||||||
|
}
|
||||||
|
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
|
testOptions.animationsDisabled = true
|
||||||
|
}
|
16
buildSrc/src/main/java/BinaryCompatibilityValidator.kt
Normal file
16
buildSrc/src/main/java/BinaryCompatibilityValidator.kt
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
/*
|
||||||
|
* Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
import kotlinx.validation.ApiValidationExtension
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
|
|
||||||
|
internal fun Project.configureBinaryCompatibilityValidator() {
|
||||||
|
extensions.configure<ApiValidationExtension> {
|
||||||
|
ignoredProjects = mutableSetOf(
|
||||||
|
"app"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,13 +5,6 @@
|
||||||
|
|
||||||
private const val KOTLIN_VERSION = "1.4.10"
|
private const val KOTLIN_VERSION = "1.4.10"
|
||||||
|
|
||||||
object Plugins {
|
|
||||||
|
|
||||||
const val agp = "com.android.tools.build:gradle:4.0.2"
|
|
||||||
const val binaryCompatibilityValidator = "org.jetbrains.kotlinx:binary-compatibility-validator:0.2.3"
|
|
||||||
const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION"
|
|
||||||
}
|
|
||||||
|
|
||||||
object Dependencies {
|
object Dependencies {
|
||||||
object Kotlin {
|
object Kotlin {
|
||||||
object Coroutines {
|
object Coroutines {
|
||||||
|
@ -28,7 +21,7 @@ object Dependencies {
|
||||||
|
|
||||||
const val activity_ktx = "androidx.activity:activity-ktx:1.2.0-beta01"
|
const val activity_ktx = "androidx.activity:activity-ktx:1.2.0-beta01"
|
||||||
const val annotation = "androidx.annotation:annotation:1.1.0"
|
const val annotation = "androidx.annotation:annotation:1.1.0"
|
||||||
const val autofill = "androidx.autofill:autofill:1.1.0-alpha02"
|
const val autofill = "androidx.autofill:autofill:1.1.0-beta01"
|
||||||
const val appcompat = "androidx.appcompat:appcompat:1.3.0-alpha02"
|
const val appcompat = "androidx.appcompat:appcompat:1.3.0-alpha02"
|
||||||
const val biometric = "androidx.biometric:biometric:1.1.0-beta01"
|
const val biometric = "androidx.biometric:biometric:1.1.0-beta01"
|
||||||
const val constraint_layout = "androidx.constraintlayout:constraintlayout:2.0.2"
|
const val constraint_layout = "androidx.constraintlayout:constraintlayout:2.0.2"
|
||||||
|
@ -38,7 +31,7 @@ object Dependencies {
|
||||||
const val lifecycle_common = "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
|
const val lifecycle_common = "androidx.lifecycle:lifecycle-common-java8:$lifecycleVersion"
|
||||||
const val lifecycle_livedata_ktx = "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion"
|
const val lifecycle_livedata_ktx = "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion"
|
||||||
const val lifecycle_viewmodel_ktx = "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion"
|
const val lifecycle_viewmodel_ktx = "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycleVersion"
|
||||||
const val material = "com.google.android.material:material:1.3.0-alpha02"
|
const val material = "com.google.android.material:material:1.3.0-alpha03"
|
||||||
const val preference = "androidx.preference:preference:1.1.1"
|
const val preference = "androidx.preference:preference:1.1.1"
|
||||||
const val recycler_view = "androidx.recyclerview:recyclerview:1.2.0-alpha06"
|
const val recycler_view = "androidx.recyclerview:recyclerview:1.2.0-alpha06"
|
||||||
const val recycler_view_selection = "androidx.recyclerview:recyclerview-selection:1.1.0-rc03"
|
const val recycler_view_selection = "androidx.recyclerview:recyclerview-selection:1.1.0-rc03"
|
||||||
|
@ -72,12 +65,12 @@ object Dependencies {
|
||||||
|
|
||||||
object NonFree {
|
object NonFree {
|
||||||
|
|
||||||
const val google_play_auth_api_phone = "com.google.android.gms:play-services-auth-api-phone:17.4.0"
|
const val google_play_auth_api_phone = "com.google.android.gms:play-services-auth-api-phone:17.5.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
object Testing {
|
object Testing {
|
||||||
|
|
||||||
const val junit = "junit:junit:4.13"
|
const val junit = "junit:junit:4.13.1"
|
||||||
const val kotlin_test_junit = "org.jetbrains.kotlin:kotlin-test-junit:$KOTLIN_VERSION"
|
const val kotlin_test_junit = "org.jetbrains.kotlin:kotlin-test-junit:$KOTLIN_VERSION"
|
||||||
|
|
||||||
object AndroidX {
|
object AndroidX {
|
||||||
|
|
8
buildSrc/src/main/java/KotlinCompilerArgs.kt
Normal file
8
buildSrc/src/main/java/KotlinCompilerArgs.kt
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
/*
|
||||||
|
* Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
internal val additionalCompilerArgs = listOf(
|
||||||
|
"-Xopt-in=kotlin.RequiresOptIn"
|
||||||
|
)
|
44
buildSrc/src/main/java/PasswordStorePlugin.kt
Normal file
44
buildSrc/src/main/java/PasswordStorePlugin.kt
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/*
|
||||||
|
* Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved.
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-only
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.android.build.gradle.TestedExtension
|
||||||
|
import com.android.build.gradle.internal.plugins.AppPlugin
|
||||||
|
import com.android.build.gradle.internal.plugins.LibraryPlugin
|
||||||
|
import org.gradle.api.Plugin
|
||||||
|
import org.gradle.api.Project
|
||||||
|
import org.gradle.api.plugins.JavaLibraryPlugin
|
||||||
|
import org.gradle.api.plugins.JavaPlugin
|
||||||
|
import org.gradle.api.tasks.compile.JavaCompile
|
||||||
|
import org.gradle.kotlin.dsl.getByType
|
||||||
|
import org.gradle.kotlin.dsl.withType
|
||||||
|
|
||||||
|
class PasswordStorePlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
override fun apply(project: Project) {
|
||||||
|
project.configureForAllProjects()
|
||||||
|
|
||||||
|
if (project.isRoot) {
|
||||||
|
project.configureForRootProject()
|
||||||
|
}
|
||||||
|
|
||||||
|
project.plugins.all {
|
||||||
|
when (this) {
|
||||||
|
is JavaPlugin,
|
||||||
|
is JavaLibraryPlugin -> {
|
||||||
|
project.tasks.withType<JavaCompile> {
|
||||||
|
options.compilerArgs.add("-Xlint:unchecked")
|
||||||
|
options.isDeprecation = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
is LibraryPlugin,
|
||||||
|
is AppPlugin -> {
|
||||||
|
project.extensions.getByType<TestedExtension>().configureCommonAndroidOptions()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val Project.isRoot get() = this == this.rootProject
|
|
@ -8,7 +8,6 @@ org.gradle.caching=true
|
||||||
|
|
||||||
# Enabling filesystem watching
|
# Enabling filesystem watching
|
||||||
org.gradle.vfs.watch=true
|
org.gradle.vfs.watch=true
|
||||||
org.gradle.unsafe.watch-fs=true
|
|
||||||
|
|
||||||
# Enable Kotlin incremental compilation
|
# Enable Kotlin incremental compilation
|
||||||
kotlin.incremental=true
|
kotlin.incremental=true
|
||||||
|
@ -49,3 +48,6 @@ android.defaults.buildfeatures.aidl=false
|
||||||
android.defaults.buildfeatures.renderscript=false
|
android.defaults.buildfeatures.renderscript=false
|
||||||
android.defaults.buildfeatures.resvalues=false
|
android.defaults.buildfeatures.resvalues=false
|
||||||
android.defaults.buildfeatures.shaders=false
|
android.defaults.buildfeatures.shaders=false
|
||||||
|
|
||||||
|
# Disable warnings about unsupported features, we know what we're doing
|
||||||
|
android.suppressUnsupportedOptionWarnings=android.enableR8.fullMode,android.enableResourceOptimizations,android.nonTransitiveRClass,android.suppressUnsupportedOptionWarnings
|
||||||
|
|
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,6 +1,6 @@
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionSha256Sum=11657af6356b7587bfb37287b5992e94a9686d5c8a0a1b60b87b9928a2decde5
|
distributionSha256Sum=0080de8491f0918e4f529a6db6820fa0b9e818ee2386117f4394f95feb1d5583
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|
|
@ -4,8 +4,8 @@ set -e
|
||||||
ENCRYPT_KEY=$1
|
ENCRYPT_KEY=$1
|
||||||
|
|
||||||
declare -A SECRETS
|
declare -A SECRETS
|
||||||
SECRETS[release/keystore.cipher]=keystore.jks
|
SECRETS[secrets/keystore.cipher]=keystore.jks
|
||||||
SECRETS[release/props.cipher]=keystore.properties
|
SECRETS[secrets/props.cipher]=keystore.properties
|
||||||
|
|
||||||
if [[ -n "$ENCRYPT_KEY" ]]; then
|
if [[ -n "$ENCRYPT_KEY" ]]; then
|
||||||
for src in "${!SECRETS[@]}"; do
|
for src in "${!SECRETS[@]}"; do
|
Loading…
Reference in a new issue