Files

104 lines
3.3 KiB
Kotlin

import java.io.File
import java.util.Properties
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
}
val releaseSigningProperties = Properties()
val releaseSigningPropertiesFile = File(
System.getProperty("user.home"),
".config/android/release-signing.properties",
)
if (releaseSigningPropertiesFile.isFile) {
releaseSigningPropertiesFile.inputStream().use(releaseSigningProperties::load)
}
val releaseKeystorePath = releaseSigningProperties.getProperty("storeFile")
val releaseKeyAlias = releaseSigningProperties.getProperty("keyAlias")
val releaseStorePassword = providers.gradleProperty("androidReleaseStorePassword").orNull
val releaseKeyPassword = providers.gradleProperty("androidReleaseKeyPassword").orNull
val hasReleaseSigning = !releaseKeystorePath.isNullOrBlank() &&
!releaseKeyAlias.isNullOrBlank() &&
!releaseStorePassword.isNullOrBlank() &&
!releaseKeyPassword.isNullOrBlank()
val releaseBuildRequested = gradle.startParameter.taskNames.any { it.contains("release", ignoreCase = true) }
if (releaseBuildRequested && !hasReleaseSigning) {
error(
"Release signing is not configured. Configure storeFile and keyAlias in " +
"~/.config/android/release-signing.properties and passwords in ~/.gradle/gradle.properties.",
)
}
android {
namespace = "se.ajpanton.notificationsmaster"
compileSdk = 36
defaultConfig {
applicationId = "se.ajpanton.notificationsmaster"
minSdk = 34
targetSdk = 36
versionCode = project.findProperty("notificationsMasterVersionCode")?.toString()?.toIntOrNull() ?: 1
versionName = project.findProperty("notificationsMasterVersionName")?.toString() ?: "0.1"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
buildFeatures {
viewBinding = true
}
signingConfigs {
if (hasReleaseSigning) {
create("release") {
storeFile = file(releaseKeystorePath!!)
storePassword = releaseStorePassword
keyAlias = releaseKeyAlias
keyPassword = releaseKeyPassword
}
}
}
buildTypes {
getByName("release") {
if (hasReleaseSigning) {
signingConfig = signingConfigs.getByName("release")
}
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlin {
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
}
}
}
dependencies {
implementation(libs.appcompat)
implementation(libs.core.ktx)
implementation(libs.fragment.ktx)
implementation(libs.material)
implementation(libs.drawerlayout)
implementation(libs.recyclerview)
implementation(libs.swiperefreshlayout)
implementation(libs.lifecycle.runtime.ktx)
implementation(libs.re2j)
// Present only when the user enables this APK as an LSPosed module.
compileOnly(libs.libxposed.api)
testImplementation(libs.junit)
testImplementation("org.json:json:20240303")
androidTestImplementation("androidx.test.ext:junit:1.2.1")
androidTestImplementation("androidx.test:runner:1.6.2")
}