Twenty commits since v0.3.0, and the tag still pointed at the old one: nothing could be published while main declared a version that was already taken. 0.4.0 rather than 0.3.1 — this is not a patch. Tablets and unfolded foldables read in columns now, the dictionary and the reading settings moved beside the poem instead of over it, couplets sit in cards and share a line where there is room, pages fill in where they load, and the design system that describes all of it lives in design/. Changelog 6 in all three languages, as F-Droid reads them from fastlane/. The release APK is not archived in releases/ yet: the signing key is not on this machine, and every release so far shares one key so that each upgrades the last in place. Signing and archiving wait for it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
101 lines
3.5 KiB
Plaintext
101 lines
3.5 KiB
Plaintext
import java.util.Properties
|
|
|
|
plugins {
|
|
alias(libs.plugins.android.application)
|
|
alias(libs.plugins.kotlin.compose)
|
|
alias(libs.plugins.kotlin.serialization)
|
|
}
|
|
|
|
// Release signing is optional: F-Droid builds from source and signs with its own key, so the
|
|
// build has to succeed with no keystore present. Drop a keystore.properties next to settings.gradle
|
|
// (storeFile, storePassword, keyAlias, keyPassword) to sign locally; it is gitignored.
|
|
val keystoreProperties = Properties().apply {
|
|
val file = rootProject.file("keystore.properties")
|
|
if (file.exists()) file.inputStream().use { load(it) }
|
|
}
|
|
|
|
// A delivered file should say what it is without being opened.
|
|
base {
|
|
archivesName = "ganjoor-0.4.0"
|
|
}
|
|
|
|
android {
|
|
namespace = "com.ganjoor.android"
|
|
compileSdk {
|
|
version = release(37)
|
|
}
|
|
|
|
defaultConfig {
|
|
applicationId = "com.ganjoor.android"
|
|
minSdk = 24
|
|
targetSdk = 37
|
|
// Pre-1.0 while the app is still being shaped. versionCode only ever climbs: F-Droid
|
|
// refuses an update that does not, and one changelog file per code lives in
|
|
// fastlane/metadata/android/*/changelogs/.
|
|
versionCode = 6
|
|
versionName = "0.4.0"
|
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
|
}
|
|
|
|
signingConfigs {
|
|
if (keystoreProperties.isNotEmpty()) {
|
|
create("release") {
|
|
storeFile = rootProject.file(keystoreProperties.getProperty("storeFile"))
|
|
storePassword = keystoreProperties.getProperty("storePassword")
|
|
keyAlias = keystoreProperties.getProperty("keyAlias")
|
|
keyPassword = keystoreProperties.getProperty("keyPassword")
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
signingConfig = signingConfigs.findByName("release")
|
|
optimization {
|
|
enable = true
|
|
packageScope = setOf("androidx.**", "kotlin.**", "kotlinx.**")
|
|
}
|
|
}
|
|
}
|
|
|
|
// The dependency metadata block is signed with a Google key and is not reproducible, so
|
|
// F-Droid rejects APKs that carry it.
|
|
dependenciesInfo {
|
|
includeInApk = false
|
|
includeInBundle = false
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_11
|
|
targetCompatibility = JavaVersion.VERSION_11
|
|
}
|
|
buildFeatures {
|
|
compose = true
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation(platform(libs.androidx.compose.bom))
|
|
implementation(libs.androidx.activity.compose)
|
|
implementation(libs.androidx.compose.material3)
|
|
implementation(libs.androidx.compose.material.icons.core)
|
|
implementation(libs.androidx.compose.ui)
|
|
implementation(libs.androidx.compose.ui.graphics)
|
|
implementation(libs.androidx.compose.ui.tooling.preview)
|
|
implementation(libs.androidx.core.ktx)
|
|
implementation(libs.androidx.lifecycle.runtime.ktx)
|
|
implementation(libs.androidx.navigation.compose)
|
|
implementation(libs.okhttp)
|
|
implementation(libs.kotlinx.serialization.json)
|
|
implementation(libs.coil.compose)
|
|
implementation(libs.coil.network.okhttp)
|
|
testImplementation(libs.junit)
|
|
androidTestImplementation(platform(libs.androidx.compose.bom))
|
|
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
|
|
androidTestImplementation(libs.androidx.espresso.core)
|
|
androidTestImplementation(libs.androidx.junit)
|
|
debugImplementation(libs.androidx.compose.ui.test.manifest)
|
|
debugImplementation(libs.androidx.compose.ui.tooling)
|
|
}
|