106 lines
4.0 KiB
Plaintext
106 lines
4.0 KiB
Plaintext
import java.util.Base64
|
|
|
|
plugins {
|
|
alias(libs.plugins.android.application)
|
|
alias(libs.plugins.jetbrains.kotlin.android)
|
|
alias(libs.plugins.compose.compiler)
|
|
kotlin("plugin.serialization") version "2.0.20"
|
|
}
|
|
|
|
android {
|
|
namespace = "de.timklge.karoopowerbar"
|
|
compileSdk = 34
|
|
|
|
defaultConfig {
|
|
applicationId = "de.timklge.karoopowerbar"
|
|
minSdk = 26
|
|
targetSdk = 33
|
|
versionCode = 100 + (System.getenv("BUILD_NUMBER")?.toInt() ?: 1)
|
|
versionName = System.getenv("RELEASE_VERSION") ?: "1.0"
|
|
}
|
|
|
|
signingConfigs {
|
|
create("release") {
|
|
val env: MutableMap<String, String> = System.getenv()
|
|
keyAlias = env["KEY_ALIAS"]
|
|
keyPassword = env["KEY_PASSWORD"]
|
|
|
|
val base64keystore: String = env["KEYSTORE_BASE64"] ?: ""
|
|
val keystoreFile: File = File.createTempFile("keystore", ".jks")
|
|
keystoreFile.writeBytes(Base64.getDecoder().decode(base64keystore))
|
|
storeFile = keystoreFile
|
|
storePassword = env["KEYSTORE_PASSWORD"]
|
|
}
|
|
}
|
|
buildTypes {
|
|
debug {
|
|
isMinifyEnabled = false
|
|
}
|
|
release {
|
|
signingConfig = signingConfigs.getByName("release")
|
|
isMinifyEnabled = true
|
|
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
|
}
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
}
|
|
kotlinOptions {
|
|
jvmTarget = "1.8"
|
|
}
|
|
buildFeatures {
|
|
compose = true
|
|
buildConfig = true
|
|
}
|
|
}
|
|
|
|
tasks.register("generateManifest") {
|
|
description = "Generates manifest.json with current version information"
|
|
group = "build"
|
|
|
|
doLast {
|
|
val manifestFile = file("$projectDir/manifest.json")
|
|
val manifest = mapOf(
|
|
"label" to "Powerbar",
|
|
"packageName" to "de.timklge.karoopowerbar",
|
|
"iconUrl" to "https://github.com/timklge/karoo-powerbar/releases/latest/download/karoo-powerbar.png",
|
|
"latestApkUrl" to "https://github.com/timklge/karoo-powerbar/releases/latest/download/app-release.apk",
|
|
"latestVersion" to android.defaultConfig.versionName,
|
|
"latestVersionCode" to android.defaultConfig.versionCode,
|
|
"developer" to "github.com/timklge",
|
|
"description" to "Open-source extension that adds colored power or heart rate progress bars to the edges of the screen, similar to the LEDs on Wahoo computers",
|
|
"releaseNotes" to "* Add route progress data source\n* Add workout target range indicator\n* Replace dropdown popup with fullscreen dialog",
|
|
"screenshotUrls" to listOf(
|
|
"https://github.com/timklge/karoo-powerbar/releases/latest/download/powerbar_min.gif",
|
|
"https://github.com/timklge/karoo-powerbar/releases/latest/download/powerbar0.png",
|
|
"https://github.com/timklge/karoo-powerbar/releases/latest/download/powerbar2.png",
|
|
)
|
|
)
|
|
|
|
val gson = groovy.json.JsonBuilder(manifest).toPrettyString()
|
|
manifestFile.writeText(gson)
|
|
println("Generated manifest.json with version ${android.defaultConfig.versionName} (${android.defaultConfig.versionCode})")
|
|
}
|
|
}
|
|
|
|
tasks.named("assemble") {
|
|
dependsOn("generateManifest")
|
|
}
|
|
|
|
|
|
dependencies {
|
|
implementation(libs.hammerhead.karoo.ext)
|
|
implementation(libs.androidx.core.ktx)
|
|
implementation(libs.bundles.androidx.lifeycle)
|
|
implementation(libs.androidx.activity.compose)
|
|
implementation(libs.bundles.compose.ui)
|
|
implementation(libs.androidx.navigation.runtime.ktx)
|
|
implementation(libs.androidx.navigation.compose)
|
|
implementation(libs.kotlinx.serialization.json)
|
|
implementation(libs.color)
|
|
implementation(libs.androidx.datastore.preferences)
|
|
implementation(libs.androidx.cardview)
|
|
implementation(libs.androidx.lifecycle.runtime.ktx)
|
|
implementation(libs.mapbox.sdk.turf)
|
|
} |