forked from Tadrisino/MathApp_frontend
First time the project has been built: debug and release both produce an APK. Release refuses to build without keystore or RSA key. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
82 lines
3.6 KiB
Kotlin
82 lines
3.6 KiB
Kotlin
import java.util.Properties
|
|
|
|
plugins {
|
|
id("com.android.application")
|
|
id("org.jetbrains.kotlin.android")
|
|
}
|
|
|
|
// تنظیماتِ حساس (keystore و کلیدِ RSAِ بازار) در ریپو نیستند. از فایلی بیرون از ریپو خوانده میشوند:
|
|
// $TADRISINO_ANDROID_CONFIG یا ~/.tadrisino/android.properties
|
|
// کلیدها: storeFile, storePassword, keyAlias, keyPassword, bazaarRsaKey. شرحِ کامل: README.md.
|
|
val configFile = File(System.getenv("TADRISINO_ANDROID_CONFIG") ?: "${System.getProperty("user.home")}/.tadrisino/android.properties")
|
|
val secrets = Properties().apply { if (configFile.exists()) configFile.inputStream().use { load(it) } }
|
|
// فقط وقتی build از نوعِ release است الزامی است؛ debug بدونِ آن هم ساخته میشود.
|
|
val wantsRelease = gradle.startParameter.taskNames.any { it.contains("release", ignoreCase = true) }
|
|
fun secret(name: String): String {
|
|
val v = secrets.getProperty(name)?.trim().orEmpty()
|
|
if (wantsRelease && v.isEmpty()) {
|
|
throw GradleException("build نوعِ release «$name» را لازم دارد. در ${configFile.path} نیست یا خالی است (README.md ← «تنظیماتِ بیرون از ریپو»).")
|
|
}
|
|
return v
|
|
}
|
|
|
|
android {
|
|
// ⚠️ اسمِ پکیج باید همانی باشد که در پیشخانِ بازار ثبت است. com.tadrisino.app را بازار
|
|
// برای حسابِ شرکت «Product is not found» جواب داد (یعنی هست)، ولی سنیور تأیید نکرده
|
|
// که همان اپِ ریاضی است (CLAUDE.mdِ بکاند، ۲۰۲۶-۰۹-۳۰).
|
|
namespace = "com.tadrisino.app"
|
|
compileSdk = 34
|
|
|
|
defaultConfig {
|
|
applicationId = "com.tadrisino.app"
|
|
minSdk = 23
|
|
targetSdk = 34
|
|
versionCode = 1
|
|
versionName = "1.0.0"
|
|
|
|
// آدرسِ همان فرانتِ وب. دامنه عوض شود، فقط همین خط.
|
|
buildConfigField("String", "WEB_URL", "\"https://math.tadrisino2.ir/\"")
|
|
// کلیدِ RSAِ عمومیِ اپ از پیشخانِ بازار (بخشِ «پرداخت درونبرنامهای»). کلیدِ عمومی
|
|
// است و در اپ مینشیند؛ رمز نیست. تا پر نشود، اپ خرید را شروع نمیکند.
|
|
// از فایلِ بیرون از ریپو؛ برای build نوعِ release خالی بودنش خطا میدهد (نه اپِ بیخرید).
|
|
buildConfigField("String", "BAZAAR_RSA_KEY", "\"${secret("bazaarRsaKey")}\"")
|
|
}
|
|
|
|
signingConfigs {
|
|
create("release") {
|
|
// release بدونِ keystore ساخته نمیشود؛ هرگز بیصدا با کلیدِ debug امضا نمیشود.
|
|
if (wantsRelease) {
|
|
storeFile = file(secret("storeFile"))
|
|
storePassword = secret("storePassword")
|
|
keyAlias = secret("keyAlias")
|
|
keyPassword = secret("keyPassword")
|
|
}
|
|
}
|
|
}
|
|
|
|
buildFeatures {
|
|
buildConfig = true
|
|
}
|
|
|
|
buildTypes {
|
|
release {
|
|
isMinifyEnabled = false
|
|
signingConfig = signingConfigs.getByName("release")
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
targetCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
kotlinOptions {
|
|
jvmTarget = "17"
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation("androidx.appcompat:appcompat:1.7.0")
|
|
implementation("androidx.activity:activity-ktx:1.9.2")
|
|
implementation("com.github.cafebazaar.Poolakey:poolakey:2.2.0")
|
|
}
|