56 lines
2.1 KiB
Groovy
56 lines
2.1 KiB
Groovy
pluginManagement {
|
||
def flutterSdkPath = {
|
||
def properties = new Properties()
|
||
file("local.properties").withInputStream { properties.load(it) }
|
||
def flutterSdkPath = properties.getProperty("flutter.sdk")
|
||
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
|
||
return flutterSdkPath
|
||
}()
|
||
|
||
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
|
||
|
||
repositories {
|
||
google()
|
||
mavenCentral()
|
||
gradlePluginPortal()
|
||
}
|
||
}
|
||
|
||
plugins {
|
||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||
id "com.android.application" version "9.0.1" apply false
|
||
id "org.jetbrains.kotlin.android" version "2.3.20" apply false
|
||
}
|
||
|
||
include ":app"
|
||
|
||
// ============================================================
|
||
// 【Gradle 兼容补丁】flutter_inappwebview_android 1.1.3 的 AGP 9 兼容问题
|
||
//
|
||
// 问题:AGP 9 不支持 proguard-android.txt,必须用 proguard-android-optimize.txt。
|
||
// 插件 build.gradle 写死了 proguard-android.txt → Gradle 解析时就报错
|
||
// (debug 构建也炸,因为 AGP 9 在解析阶段就校验了这个方法调用)。
|
||
//
|
||
// 修复:在 Gradle 解析插件 build.gradle 之前(beforeProject 钩子),
|
||
// 把插件文件里的字符串替换掉。这个钩子比 Gradle 自带机制还早触发,
|
||
// 所以能赶在 Gradle 报错前修好。
|
||
//
|
||
// 优势:
|
||
// - Gradle 原生,不依赖 Python/PowerShell
|
||
// - 跨平台(Windows/Mac/Linux,Gradle 必备)
|
||
// - 所有同事拉代码后自动生效
|
||
// - Gradle daemon 每次构建都会重新解析 build.gradle,不会有缓存问题
|
||
// ============================================================
|
||
gradle.beforeProject { Project project ->
|
||
if (project.name == 'flutter_inappwebview_android') {
|
||
def gradleFile = project.file('build.gradle')
|
||
def text = gradleFile.text
|
||
if (text.contains("proguard-android.txt")) {
|
||
gradleFile.text = text.replace(
|
||
"proguard-android.txt", "proguard-android-optimize.txt"
|
||
)
|
||
println "✅ Patched flutter_inappwebview_android/build.gradle (AGP 9 compat)"
|
||
}
|
||
}
|
||
}
|