Files
photo-live/apps/mobile/android/app/build.gradle.kts
T
浅念 203f62e7cb test(app): align mockwebserver with resolved okhttp 5.2.1
fluwx 6.0.2 传递 okhttp 5.x,冲突调解覆盖本模块 4.12 声明(debug
运行时同为 5.2.1);mockwebserver 4.12 在 okhttp 5.x 运行时缺
okhttp3.internal.Util → 单测 setUp 即 NoClassDefFoundError(本改动
前 main 上已复现)。对齐后 11/11 通过。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-28 14:10:14 +08:00

82 lines
3.2 KiB
Kotlin
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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")
// mockwebserver 须对齐实际解析的 okhttp:fluwx 传递 okhttp 5.x
// (冲突调解覆盖本模块 4.12 声明),4.12 的 mockwebserver 在 5.x
// 运行时缺 okhttp3.internal.Util → NoClassDefFoundError。
testImplementation("com.squareup.okhttp3:mockwebserver:5.2.1")
}
flutter {
source = "../.."
}