import java.util.Properties plugins { id("com.android.application") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") } android { namespace = "com.photolive.photo_live" compileSdk = flutter.compileSdkVersion ndkVersion = flutter.ndkVersion compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } defaultConfig { applicationId = "com.photolive.photo_live" // P3 约定:minSdk 24(Flutter 默认下限);targetSdk 36(Android 16)。 // Task 7 原生桥接:targetSdk>=34 走 WorkManager expedited + dataSync 前台服务; // 若需降级(厂商兼容),路径 = 普通 WorkManager + 前台服务通知(见技术方案 §6.3)。 minSdk = 24 targetSdk = 36 versionCode = flutter.versionCode versionName = flutter.versionName } // 正式签名(key.properties + photo-live-release.jks,均不入库): // 缺失时回退 debug 签名(CI/他人克隆仓库仍可构建)。 val keystoreProps = Properties().apply { val f = rootProject.file("app/key.properties") if (f.exists()) f.inputStream().use { load(it) } } buildTypes { release { signingConfig = if (keystoreProps.getProperty("storeFile") != null) { signingConfigs.create("release") { storeFile = rootProject.file("app/" + keystoreProps.getProperty("storeFile")) storePassword = keystoreProps.getProperty("storePassword") keyAlias = keystoreProps.getProperty("keyAlias") keyPassword = keystoreProps.getProperty("keyPassword") } } else { // Signing with the debug keys(无正式签名配置的构建机回退)。 signingConfigs.getByName("debug") } // R8 混淆会破坏 WorkManager 反射初始化(NoSuchMethodException // WorkDatabase_Impl),ProGuard keep 规则见 proguard-rules.pro。 isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } } kotlin { compilerOptions { jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 } } dependencies { // P3 Task 7 后台上传桥接:WorkManager(expedited + dataSync 前台服务) // + OkHttp 直传 presign PUT(独立 4.12,与 Flutter 引擎无耦合)。 implementation("androidx.work:work-runtime-ktx:2.10.0") implementation("androidx.core:core-ktx:1.15.0") implementation("com.squareup.okhttp3:okhttp:4.12.0") testImplementation("junit:junit:4.13.2") testImplementation("com.squareup.okhttp3:mockwebserver:4.12.0") } flutter { source = "../.." }