放入 agconnect-services.json 后原插件坐标无法解析,且 1.9.1 不兼容 AGP 9。 映射到 agcp 1.9.5.301,Gradle 可按包名校验;该文件继续忽略不入库。 Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: multica-agent <github@multica.ai>
97 lines
3.4 KiB
Kotlin
97 lines
3.4 KiB
Kotlin
buildscript {
|
||
repositories {
|
||
maven("https://maven.aliyun.com/repository/google")
|
||
maven("https://maven.aliyun.com/repository/central")
|
||
maven("https://developer.huawei.com/repo/")
|
||
google()
|
||
mavenCentral()
|
||
}
|
||
// agcp 1.9.x 用 apply() 时会检查 buildscript classpath 里有没有 AGP;
|
||
// 仅靠 plugins DSL 会报「com.android.tools.build:gradle is no set」。
|
||
dependencies {
|
||
classpath("com.android.tools.build:gradle:9.0.1")
|
||
classpath("com.huawei.agconnect:agcp:1.9.5.301")
|
||
}
|
||
}
|
||
|
||
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")
|
||
}
|
||
|
||
// 华为 agconnect-services.json 到位后才启用 AGConnect 插件,避免缺文件时整包编不过。
|
||
// 文件从华为 AppGallery Connect 下载,放到本目录,不要提交进 Git。
|
||
// jpush_flutter_android 只在自己的 library 模块 apply 该插件,不会处理本 app 的配置文件,
|
||
// 所以这里仍要在 :app 上 apply,并不是重复。
|
||
if (file("agconnect-services.json").exists()) {
|
||
apply(plugin = "com.huawei.agconnect")
|
||
}
|
||
|
||
android {
|
||
namespace = "cn.solsum.jinxunda"
|
||
compileSdk = flutter.compileSdkVersion
|
||
ndkVersion = flutter.ndkVersion
|
||
|
||
compileOptions {
|
||
sourceCompatibility = JavaVersion.VERSION_17
|
||
targetCompatibility = JavaVersion.VERSION_17
|
||
}
|
||
|
||
defaultConfig {
|
||
applicationId = "cn.solsum.jinxunda"
|
||
// 极光厂商通道插件要求 minSdk 24
|
||
minSdk = 24
|
||
targetSdk = flutter.targetSdkVersion
|
||
versionCode = flutter.versionCode
|
||
versionName = flutter.versionName
|
||
manifestPlaceholders["JPUSH_PKGNAME"] = "cn.solsum.jinxunda"
|
||
manifestPlaceholders["JPUSH_APPKEY"] = "95fc2352648a7d4568ac8d72"
|
||
manifestPlaceholders["JPUSH_CHANNEL"] = "developer-default"
|
||
}
|
||
|
||
// 压缩打包 .so(默认未压缩存储,OpenIM/WebRTC 的 native 库让包多占近一倍体积);
|
||
// 代价是安装时多解压一次,对内网分发来说体积更关键。
|
||
packaging {
|
||
jniLibs {
|
||
useLegacyPackaging = true
|
||
}
|
||
}
|
||
|
||
buildTypes {
|
||
release {
|
||
// OpenIM 插件靠反射按字段名分发方法调用,R8/混淆会把字段改名导致
|
||
// 所有 SDK 调用静默无响应(表现为 initSDK 永久不返回)。
|
||
// 与官方样板工程一致:release 关闭混淆和资源压缩。
|
||
isMinifyEnabled = false
|
||
isShrinkResources = false
|
||
// TODO: Add your own signing config for the release build.
|
||
// Signing with the debug keys for now, so `flutter run --release` works.
|
||
signingConfig = signingConfigs.getByName("debug")
|
||
}
|
||
}
|
||
}
|
||
|
||
kotlin {
|
||
compilerOptions {
|
||
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
|
||
}
|
||
}
|
||
|
||
flutter {
|
||
source = "../.."
|
||
}
|
||
|
||
// livekit_client 插件硬编码 compileSdk = 34,但它依赖的 flutter_webrtc 要求消费者 ≥36,
|
||
// AAR 元数据校验会因此失败。:app 先于各插件求值(根脚本有 evaluationDependsOn(":app")),
|
||
// 所以在插件求值完成后把它的 compileSdk 抬到 36。
|
||
rootProject.subprojects {
|
||
if (name == "livekit_client") {
|
||
afterEvaluate {
|
||
extensions.configure<com.android.build.gradle.LibraryExtension> {
|
||
compileSdk = 36
|
||
}
|
||
}
|
||
}
|
||
}
|