212 lines
6.3 KiB
Plaintext
212 lines
6.3 KiB
Plaintext
/*
|
|
* Copyright 2023 Pachli Association
|
|
*
|
|
* This file is a part of Pachli.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
|
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* Pachli is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
|
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
* Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with Pachli; if not,
|
|
* see <http://www.gnu.org/licenses>.
|
|
*/
|
|
|
|
import com.android.build.gradle.internal.api.ApkVariantOutputImpl
|
|
|
|
plugins {
|
|
alias(libs.plugins.pachli.android.application)
|
|
alias(libs.plugins.pachli.android.hilt)
|
|
alias(libs.plugins.kotlin.parcelize)
|
|
alias(libs.plugins.aboutlibraries)
|
|
|
|
id("app.pachli.plugins.markdown2resource")
|
|
}
|
|
|
|
apply(from = "gitTools.gradle")
|
|
val getGitSha: groovy.lang.Closure<String> by extra
|
|
val getGitRevCount: groovy.lang.Closure<Int> by extra
|
|
|
|
android {
|
|
namespace = "app.pachli"
|
|
|
|
defaultConfig {
|
|
applicationId = "app.pachli"
|
|
versionCode = 10
|
|
versionName = "2.1.1"
|
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
testInstrumentationRunnerArguments["disableAnalytics"] = "true"
|
|
|
|
vectorDrawables.useSupportLibrary = true
|
|
}
|
|
|
|
buildTypes {
|
|
debug {
|
|
isDefault = true
|
|
}
|
|
|
|
release {
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
|
}
|
|
}
|
|
|
|
packaging {
|
|
resources.excludes.apply {
|
|
add("LICENSE_OFL")
|
|
add("LICENSE_UNICODE")
|
|
}
|
|
}
|
|
|
|
bundle {
|
|
language {
|
|
// bundle all languages in every apk so the dynamic language switching works
|
|
enableSplit = false
|
|
}
|
|
}
|
|
|
|
dependenciesInfo {
|
|
includeInApk = false
|
|
includeInBundle = false
|
|
}
|
|
|
|
testOptions {
|
|
unitTests {
|
|
isReturnDefaultValues = true
|
|
isIncludeAndroidResources = true
|
|
}
|
|
unitTests.all {
|
|
it.systemProperty("robolectric.logging.enabled", "true")
|
|
it.systemProperty("robolectric.lazyload", "ON")
|
|
}
|
|
}
|
|
|
|
applicationVariants.configureEach {
|
|
tasks.register("printVersionInfo${name.replaceFirstChar { it.uppercaseChar() }}") {
|
|
notCompatibleWithConfigurationCache("Should always print the version info")
|
|
doLast {
|
|
println("$versionCode $versionName")
|
|
}
|
|
}
|
|
outputs.configureEach {
|
|
this as ApkVariantOutputImpl
|
|
// Set the "orange" release versionCode to the number of commits on the
|
|
// branch, to ensure the versionCode updates on every release. Include the
|
|
// SHA of the current commit to help with troubleshooting bug reports
|
|
if (buildType.name == "release" && flavorName.startsWith("orange")) {
|
|
versionCodeOverride = getGitRevCount()
|
|
versionNameOverride = "$versionName+${getGitSha()}"
|
|
}
|
|
outputFileName = "Pachli_${versionName}_${versionCode}_${getGitSha()}_${flavorName}_${buildType.name}.apk"
|
|
}
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
// JNI-only libraries don't play nicely with Robolectric
|
|
// see https://github.com/tuskyapp/Tusky/pull/3367 and
|
|
// https://github.com/google/conscrypt/issues/649
|
|
testImplementation {
|
|
exclude(group = "org.conscrypt", module = "conscrypt-android")
|
|
}
|
|
}
|
|
|
|
aboutLibraries {
|
|
configPath = "licenses"
|
|
includePlatform = false
|
|
duplicationMode = com.mikepenz.aboutlibraries.plugin.DuplicateMode.MERGE
|
|
prettyPrint = true
|
|
}
|
|
|
|
markdown2resource {
|
|
files.add(layout.projectDirectory.file("../PRIVACY.md"))
|
|
}
|
|
|
|
dependencies {
|
|
// CachedTimelineRemoteMediator needs the @Transaction annotation from Room
|
|
compileOnly(libs.bundles.room)
|
|
testCompileOnly(libs.bundles.room)
|
|
|
|
implementation(projects.core.accounts)
|
|
implementation(projects.core.common)
|
|
implementation(projects.core.database)
|
|
implementation(projects.core.navigation)
|
|
implementation(projects.core.network)
|
|
implementation(projects.core.preferences)
|
|
|
|
implementation(libs.kotlinx.coroutines.android)
|
|
implementation(libs.kotlinx.coroutines.rx3)
|
|
|
|
implementation(libs.bundles.androidx)
|
|
|
|
implementation(libs.android.material)
|
|
|
|
implementation(libs.gson)
|
|
|
|
implementation(libs.bundles.retrofit)
|
|
implementation(libs.networkresult.calladapter)
|
|
|
|
implementation(libs.bundles.okhttp)
|
|
|
|
implementation(libs.conscrypt.android)
|
|
|
|
implementation(libs.bundles.glide)
|
|
ksp(libs.glide.compiler)
|
|
|
|
implementation(libs.bundles.rxjava3)
|
|
|
|
implementation(libs.bundles.autodispose)
|
|
|
|
implementation(libs.sparkbutton)
|
|
|
|
implementation(libs.touchimageview)
|
|
|
|
implementation(libs.bundles.material.drawer)
|
|
implementation(libs.material.typeface)
|
|
|
|
implementation(libs.image.cropper)
|
|
|
|
implementation(libs.bundles.filemojicompat)
|
|
|
|
implementation(libs.bouncycastle)
|
|
implementation(libs.unified.push)
|
|
|
|
implementation(libs.bundles.xmldiff)
|
|
|
|
implementation(libs.bundles.aboutlibraries)
|
|
implementation(libs.timber)
|
|
|
|
googleImplementation(libs.app.update)
|
|
googleImplementation(libs.app.update.ktx)
|
|
|
|
implementation(libs.kotlin.result)
|
|
implementation(libs.semver)
|
|
|
|
debugImplementation(libs.leakcanary)
|
|
|
|
orangeImplementation(libs.bundles.acra)
|
|
|
|
testImplementation(projects.core.testing)
|
|
testImplementation(libs.androidx.test.junit)
|
|
testImplementation(libs.robolectric)
|
|
testImplementation(libs.bundles.mockito)
|
|
testImplementation(libs.androidx.core.testing)
|
|
testImplementation(libs.kotlinx.coroutines.test)
|
|
testImplementation(libs.androidx.work.testing)
|
|
testImplementation(libs.truth)
|
|
testImplementation(libs.turbine)
|
|
testImplementation(libs.androidx.test.core.ktx)
|
|
|
|
androidTestImplementation(libs.espresso.core)
|
|
androidTestImplementation(libs.androidx.room.testing)
|
|
androidTestImplementation(libs.androidx.test.junit)
|
|
androidTestImplementation(libs.androidx.test.core.ktx)
|
|
|
|
lintChecks(projects.checks)
|
|
}
|