mirror of
https://github.com/pachli/pachli-android.git
synced 2025-02-03 02:37:37 +01:00
e03825cc12
Now that the flavour includes the store name it's not sufficient to check for "orange" as the flavour, as that no longer matches. Now it must start with "orange" to trigger using the git commit count as the version code.
248 lines
6.9 KiB
Groovy
248 lines
6.9 KiB
Groovy
plugins {
|
|
alias(libs.plugins.android.application)
|
|
alias(libs.plugins.google.ksp)
|
|
alias(libs.plugins.kotlin.android)
|
|
alias(libs.plugins.kotlin.parcelize)
|
|
alias(libs.plugins.aboutlibraries)
|
|
alias(libs.plugins.hilt)
|
|
alias(libs.plugins.room)
|
|
|
|
id "app.pachli.plugins.markdown2resource"
|
|
}
|
|
|
|
apply from: 'gitTools.gradle'
|
|
|
|
final def gitSha = ext.getGitSha()
|
|
final def gitRevCount = ext.getGitRevCount()
|
|
|
|
// The app name
|
|
final def APP_NAME = "Pachli"
|
|
// The application id. Must be unique, e.g. based on your domain
|
|
final def APP_ID = "app.pachli"
|
|
// url of a custom app logo. Recommended size at least 600x600. Keep empty to use the default logo.
|
|
final def CUSTOM_LOGO_URL = ""
|
|
// e.g. mastodon.social. Keep empty to not suggest any instance on the signup screen
|
|
final def CUSTOM_INSTANCE = ""
|
|
// link to your support account. Will be linked on the about page when not empty.
|
|
final def SUPPORT_ACCOUNT_URL = "https://mastodon.social/@Pachli"
|
|
|
|
android {
|
|
compileSdk 34
|
|
namespace "app.pachli"
|
|
defaultConfig {
|
|
applicationId APP_ID
|
|
namespace "app.pachli"
|
|
minSdk 23
|
|
targetSdk 34
|
|
versionCode 6
|
|
versionName "1.3.0"
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
vectorDrawables.useSupportLibrary = true
|
|
|
|
resValue "string", "app_name", APP_NAME
|
|
|
|
buildConfigField("String", "CUSTOM_LOGO_URL", "\"$CUSTOM_LOGO_URL\"")
|
|
buildConfigField("String", "CUSTOM_INSTANCE", "\"$CUSTOM_INSTANCE\"")
|
|
buildConfigField("String", "SUPPORT_ACCOUNT_URL", "\"$SUPPORT_ACCOUNT_URL\"")
|
|
}
|
|
buildTypes {
|
|
debug {
|
|
getIsDefault().set(true)
|
|
}
|
|
|
|
release {
|
|
minifyEnabled true
|
|
shrinkResources true
|
|
proguardFiles 'proguard-rules.pro'
|
|
}
|
|
}
|
|
|
|
flavorDimensions += "color"
|
|
flavorDimensions += "store"
|
|
|
|
productFlavors {
|
|
blue {
|
|
dimension "color"
|
|
}
|
|
|
|
orange {
|
|
dimension "color"
|
|
resValue "string", "app_name", APP_NAME + " Current"
|
|
applicationIdSuffix ".current"
|
|
versionNameSuffix "+" + gitSha
|
|
}
|
|
|
|
fdroid {
|
|
dimension "store"
|
|
}
|
|
|
|
github {
|
|
dimension "store"
|
|
}
|
|
|
|
google {
|
|
dimension "store"
|
|
}
|
|
}
|
|
|
|
lint {
|
|
lintConfig file("lint.xml")
|
|
// Regenerate by running `./gradlew updateLintBaselineOrangeDebug`
|
|
baseline = file("lint-baseline.xml")
|
|
}
|
|
|
|
buildFeatures {
|
|
buildConfig true
|
|
resValues true
|
|
viewBinding true
|
|
}
|
|
testOptions {
|
|
unitTests {
|
|
returnDefaultValues = true
|
|
includeAndroidResources = true
|
|
}
|
|
unitTests.all {
|
|
systemProperty 'robolectric.logging.enabled', 'true'
|
|
systemProperty 'robolectric.lazyload', 'ON'
|
|
}
|
|
}
|
|
sourceSets {
|
|
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
|
|
}
|
|
|
|
// Exclude unneeded files added by libraries
|
|
packagingOptions.resources.excludes += [
|
|
'LICENSE_OFL',
|
|
'LICENSE_UNICODE',
|
|
]
|
|
|
|
bundle {
|
|
language {
|
|
// bundle all languages in every apk so the dynamic language switching works
|
|
enableSplit = false
|
|
}
|
|
}
|
|
|
|
dependenciesInfo {
|
|
includeInApk false
|
|
includeInBundle false
|
|
}
|
|
|
|
applicationVariants.configureEach { variant ->
|
|
tasks.register("printVersionInfo${variant.name.capitalize()}") {
|
|
notCompatibleWithConfigurationCache("Should always print the version info")
|
|
println variant.versionCode + " " + variant.versionName
|
|
}
|
|
variant.outputs.configureEach {
|
|
// Set the "orange" release versionCode to the number of commits on the
|
|
// branch, to ensure the versionCode updates on every release.
|
|
if (variant.buildType.name == "release" && variant.flavorName.startsWith("orange")) {
|
|
versionCodeOverride = gitRevCount
|
|
}
|
|
outputFileName = "Pachli_${variant.versionName}_${variant.versionCode}_${gitSha}_" +
|
|
"${variant.flavorName}_${buildType.name}.apk"
|
|
}
|
|
}
|
|
}
|
|
|
|
room {
|
|
schemaDirectory("$projectDir/schemas/")
|
|
}
|
|
|
|
ksp {
|
|
arg("room.incremental", "true")
|
|
arg("room.generateKotlin", "true")
|
|
}
|
|
|
|
configurations {
|
|
// JNI-only libraries don't play nicely with Robolectric
|
|
// see https://github.com/tuskyapp/Tusky/pull/3367
|
|
testImplementation.exclude group: "org.conscrypt", module: "conscrypt-android"
|
|
testRuntime.exclude group: "org.conscrypt", module: "conscrypt-android"
|
|
}
|
|
|
|
aboutLibraries {
|
|
configPath = "licenses"
|
|
includePlatform = false
|
|
duplicationMode = com.mikepenz.aboutlibraries.plugin.DuplicateMode.MERGE
|
|
prettyPrint = true
|
|
}
|
|
|
|
markdown2resource {
|
|
files = [ layout.projectDirectory.file('../PRIVACY.md') ]
|
|
}
|
|
|
|
// library versions are in PROJECT_ROOT/gradle/libs.versions.toml
|
|
dependencies {
|
|
implementation libs.kotlinx.coroutines.android
|
|
implementation libs.kotlinx.coroutines.rx3
|
|
|
|
implementation libs.bundles.androidx
|
|
implementation libs.bundles.room
|
|
ksp libs.androidx.room.compiler
|
|
|
|
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.hilt.android
|
|
ksp libs.hilt.compiler
|
|
|
|
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
|
|
|
|
testImplementation libs.androidx.test.junit
|
|
testImplementation libs.robolectric
|
|
testImplementation libs.bundles.mockito
|
|
testImplementation libs.mockwebserver
|
|
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
|
|
testImplementation libs.hilt.android.testing
|
|
kspTest libs.hilt.compiler
|
|
|
|
androidTestImplementation libs.espresso.core
|
|
androidTestImplementation libs.androidx.room.testing
|
|
androidTestImplementation libs.androidx.test.junit
|
|
androidTestImplementation libs.hilt.android.testing
|
|
androidTestImplementation libs.androidx.test.core.ktx
|
|
|
|
lintChecks project(":checks")
|
|
}
|