Adds the full Android source tree, Gradle wrapper and version catalog, fastlane store metadata in six languages and the fdroiddata build recipe. .gitignore now also excludes build output and keystores. README gains build instructions and an updated structure tree. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015g6ECVSKcBG8CJPrqC3G5o
108 lines
4.1 KiB
Kotlin
108 lines
4.1 KiB
Kotlin
plugins {
|
|
alias(libs.plugins.android.application)
|
|
alias(libs.plugins.kotlin.compose)
|
|
alias(libs.plugins.roborazzi)
|
|
}
|
|
|
|
android {
|
|
namespace = "cc.skysparkle.fogwave"
|
|
|
|
compileSdk { version = release(37) }
|
|
|
|
defaultConfig {
|
|
applicationId = "cc.skysparkle.fogwave"
|
|
minSdk = 24
|
|
targetSdk = 36
|
|
versionCode = 11
|
|
versionName = "1.0.11"
|
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
|
|
// Library versions shown under About -> Licenses, taken from the version catalog so they
|
|
// always match what is actually bundled.
|
|
buildConfigField("String", "COMPOSE_BOM_VERSION", "\"${libs.versions.composeBom.get()}\"")
|
|
buildConfigField("String", "ACTIVITY_VERSION", "\"${libs.versions.activityCompose.get()}\"")
|
|
buildConfigField("String", "CORE_KTX_VERSION", "\"${libs.versions.coreKtx.get()}\"")
|
|
buildConfigField("String", "LIFECYCLE_VERSION", "\"${libs.versions.lifecycleRuntimeCompose.get()}\"")
|
|
buildConfigField("String", "MEDIA3_VERSION", "\"${libs.versions.media3.get()}\"")
|
|
buildConfigField("String", "COROUTINES_VERSION", "\"${libs.versions.kotlinxCoroutinesAndroid.get()}\"")
|
|
buildConfigField("String", "KOTLIN_VERSION", "\"${libs.versions.kotlin.get()}\"")
|
|
buildConfigField("String", "COIL_VERSION", "\"${libs.versions.coilCompose.get()}\"")
|
|
}
|
|
|
|
// Release signing is applied only when a keystore is available, so anyone (including F-Droid,
|
|
// which signs with its own key) can build an unsigned release from a fresh clone.
|
|
val releaseKeystore = file(System.getenv("KEYSTORE_PATH") ?: "${rootDir}/my-upload-key.jks")
|
|
val canSignRelease = releaseKeystore.exists() && System.getenv("STORE_PASSWORD") != null
|
|
|
|
signingConfigs {
|
|
if (canSignRelease) {
|
|
create("release") {
|
|
storeFile = releaseKeystore
|
|
storePassword = System.getenv("STORE_PASSWORD")
|
|
keyAlias = System.getenv("KEY_ALIAS") ?: "upload"
|
|
keyPassword = System.getenv("KEY_PASSWORD") ?: System.getenv("STORE_PASSWORD")
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
isCrunchPngs = false
|
|
isMinifyEnabled = true
|
|
isShrinkResources = true
|
|
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
|
// Keeps release builds reproducible (F-Droid).
|
|
vcsInfo.include = false
|
|
if (canSignRelease) signingConfig = signingConfigs.getByName("release")
|
|
}
|
|
}
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_11
|
|
targetCompatibility = JavaVersion.VERSION_11
|
|
}
|
|
buildFeatures {
|
|
compose = true
|
|
buildConfig = true
|
|
}
|
|
testOptions { unitTests { isIncludeAndroidResources = true } }
|
|
dependenciesInfo {
|
|
includeInApk = false
|
|
includeInBundle = true
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation(platform(libs.androidx.compose.bom))
|
|
|
|
implementation(libs.androidx.activity.compose)
|
|
implementation(libs.androidx.compose.material3)
|
|
implementation(libs.androidx.compose.ui)
|
|
implementation(libs.androidx.compose.ui.graphics)
|
|
implementation(libs.androidx.core.ktx)
|
|
implementation(libs.androidx.lifecycle.runtime.compose)
|
|
implementation(libs.androidx.lifecycle.viewmodel.compose)
|
|
|
|
implementation(libs.coil.compose)
|
|
implementation(libs.androidx.media3.exoplayer)
|
|
implementation(libs.androidx.media3.common)
|
|
implementation(libs.androidx.media3.session)
|
|
implementation(libs.kotlinx.coroutines.android)
|
|
implementation(libs.kotlinx.coroutines.core)
|
|
testImplementation(libs.androidx.compose.ui.test.junit4)
|
|
testImplementation(libs.androidx.core)
|
|
testImplementation(libs.androidx.junit)
|
|
testImplementation(libs.junit)
|
|
testImplementation(libs.robolectric)
|
|
testImplementation(libs.roborazzi)
|
|
testImplementation(libs.roborazzi.compose)
|
|
testImplementation(libs.roborazzi.junit.rule)
|
|
androidTestImplementation(platform(libs.androidx.compose.bom))
|
|
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
|
|
androidTestImplementation(libs.androidx.espresso.core)
|
|
androidTestImplementation(libs.androidx.junit)
|
|
androidTestImplementation(libs.androidx.runner)
|
|
debugImplementation(libs.androidx.compose.ui.test.manifest)
|
|
debugImplementation(libs.androidx.compose.ui.tooling)
|
|
}
|