diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index de3d612..3a22c14 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -6,45 +6,33 @@ plugins { android { namespace = "com.lxh.battery_health" + // 🟢 从 34 升级到 36 compileSdk = 36 - ndkVersion = flutter.ndkVersion + // 🟢 升级 NDK 版本 + ndkVersion = "28.2.13676358" compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } - kotlinOptions { - jvmTarget = "17" + kotlin { + compilerOptions { + jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 + } } defaultConfig { applicationId = "com.lxh.battery_health" minSdk = flutter.minSdkVersion - targetSdk = 34 + targetSdk = 36 versionCode = flutter.versionCode versionName = flutter.versionName multiDexEnabled = true } - signingConfigs { - // 如果没有正式签名,可以用 debug 签名代替(测试用) - // 正式发布时请替换为自己的密钥 - getByName("debug") { - // debug 签名已经存在,无需额外配置 - } - create("release") { - // 如果有正式签名,在这里配置 - // keyAlias = "..." - // keyPassword = "..." - // storeFile = file("...") - // storePassword = "..." - } - } - buildTypes { debug { - // 🟢 关键:debug 版本包名加 .dev 后缀 applicationIdSuffix = ".dev" signingConfig = signingConfigs.getByName("debug") isDebuggable = true @@ -52,8 +40,7 @@ android { isShrinkResources = false } release { - // release 版本不加后缀,保持原包名 - signingConfig = signingConfigs.getByName("debug") // 若没有正式签名,先用 debug 签名 + signingConfig = signingConfigs.getByName("debug") isMinifyEnabled = true isShrinkResources = true proguardFiles( @@ -66,8 +53,4 @@ android { flutter { source = "../.." -} - -dependencies { - // 无需额外添加 Activity KTX,因为已改用 startActivityForResult -} +} \ No newline at end of file diff --git a/android/build.gradle.kts b/android/build.gradle.kts index a680fb7..fb12d32 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,10 +1,24 @@ -// 根项目构建脚本 plugins { id("com.android.application") version "8.13.0" apply false id("org.jetbrains.kotlin.android") version "2.2.21" apply false } -// 统一重定向构建输出目录 +// 🟢 添加 Flutter 本地仓库,让所有子模块都能找到 flutter_embedding_debug +allprojects { + repositories { + // Flutter SDK 本地引擎仓库(关键!) + maven { + url = uri("${System.getenv("FLUTTER_HOME")}/bin/cache/artifacts/engine") + } + // 备用:如果上面不行,用这个 + maven { + url = uri("${rootProject.projectDir.parentFile}/build/host/out/repo") + } + google() + mavenCentral() + } +} + val newBuildDir: Directory = rootProject.layout.buildDirectory .dir("../../build") .get() diff --git a/android/gradle.properties b/android/gradle.properties index 75e4444..b36e2c8 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -5,3 +5,5 @@ org.gradle.parallel=true android.builtInKotlin=true # This newDsl flag was added automatically by Flutter migrator android.newDsl=true +android.useAndroidX=true +android.enableJetifier=true \ No newline at end of file diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts index fdbc2e4..5ed3821 100644 --- a/android/settings.gradle.kts +++ b/android/settings.gradle.kts @@ -1,4 +1,5 @@ pluginManagement { + // 🟢 在 pluginManagement 内部读取 flutter.sdk val flutterSdkPath = run { val properties = java.util.Properties() file("local.properties").inputStream().use { properties.load(it) } @@ -10,14 +11,15 @@ pluginManagement { includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { - // 🟢 阿里云 gradle-plugin 镜像(专用) + // 🟢 Flutter 本地仓库(最高优先级) maven { - url = uri("https://maven.aliyun.com/repository/gradle-plugin") + url = uri("$flutterSdkPath/bin/cache/artifacts/engine") } - // 🟢 阿里云 public 聚合仓库(兜底) maven { - url = uri("https://maven.aliyun.com/repository/public") + url = uri("$flutterSdkPath/packages/flutter_tools/gradle") } + maven { url = uri("https://maven.aliyun.com/repository/public") } + maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") } google() mavenCentral() gradlePluginPortal() @@ -27,7 +29,20 @@ pluginManagement { dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS) repositories { - // 🟢 阿里云镜像放在最前面 + // 🟢 在 dependencyResolutionManagement 中再次读取 flutter.sdk + val flutterSdkPath = run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val sdkPath = properties.getProperty("flutter.sdk") + require(sdkPath != null) { "flutter.sdk not set in local.properties" } + sdkPath + } + maven { + url = uri("$flutterSdkPath/bin/cache/artifacts/engine") + } + maven { + url = uri("$flutterSdkPath/packages/flutter_tools/gradle") + } maven { url = uri("https://maven.aliyun.com/repository/public") } google() mavenCentral() diff --git a/pubspec.lock b/pubspec.lock index 5310969..633a4fa 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -77,18 +77,18 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 + sha256: "0891702f96b2e465fe567b7ec448380e6b1c14f60af552a8536d9f583b6b8442" url: "https://pub.flutter-io.cn" source: hosted - version: "10.1.2" + version: "13.2.0" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f + sha256: "04b173a92e2d9161dfead145667037c8d834db725ce2e7b942bfe18fd2f45a46" url: "https://pub.flutter-io.cn" source: hosted - version: "7.0.3" + version: "8.1.0" fake_async: dependency: transitive description: @@ -105,6 +105,14 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" + ffi_leak_tracker: + dependency: transitive + description: + name: ffi_leak_tracker + sha256: "4093d4ef9ca06ffe2786e73bfb25e22aa92112b9bb4ec941f11e3e6b61489a97" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.2" file: dependency: transitive description: @@ -122,10 +130,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" url: "https://pub.flutter-io.cn" source: hosted - version: "5.0.0" + version: "6.0.0" flutter_markdown: dependency: "direct main" description: @@ -180,18 +188,26 @@ packages: dependency: transitive description: name: jni - sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f + sha256: f038e58b4dc2c9037f50e233175086337e0b305e356d28211bf55f21c504cbd3 url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.0" + version: "1.0.3" jni_flutter: dependency: transitive description: name: jni_flutter - sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6" + sha256: "7b717011ea40d04fd47c2731d3d1d36eb99eba3435c2753d62489e8c3c9991d5" url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.1" + version: "1.0.2" + jni_util: + dependency: transitive + description: + name: jni_util + sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" leak_tracker: dependency: transitive description: @@ -220,10 +236,10 @@ packages: dependency: transitive description: name: lints - sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" url: "https://pub.flutter-io.cn" source: hosted - version: "5.1.1" + version: "6.1.0" logging: dependency: transitive description: @@ -268,18 +284,18 @@ packages: dependency: transitive description: name: objective_c - sha256: "6cb691c686fa2838c6deb34980d426145c2a5d537491cb83d463c33cdbc726ed" + sha256: b7fb95a6d9a4f009edd63dc5ac69f07420b23a16161c6dd8660290b59c602e8e url: "https://pub.flutter-io.cn" source: hosted - version: "9.4.1" + version: "9.5.0" package_config: dependency: transitive description: name: package_config - sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + sha256: ffcf4cf3d6c0b74ac43708d9f56625506e8a68aa935abe9d267a7330f320eb5d url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.0" + version: "3.0.0" path: dependency: "direct main" description: @@ -348,18 +364,18 @@ packages: dependency: "direct main" description: name: permission_handler - sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" + sha256: fe54465bcc62a4564c6e4db337bbaded6c0c0fa6e10487414436d163114784f6 url: "https://pub.flutter-io.cn" source: hosted - version: "11.4.0" + version: "12.0.3" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" url: "https://pub.flutter-io.cn" source: hosted - version: "12.1.0" + version: "13.0.1" permission_handler_apple: dependency: transitive description: @@ -444,10 +460,10 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: "93ae5884a9df5d3bb696825bceb3a17590754548b5d740eba51500afc8d088f5" + sha256: "0634e64bd719f89c012f392938e173521f535d3ecaf66558fa94a056d22b5cc7" url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.26" + version: "2.4.27" shared_preferences_foundation: dependency: transitive description: @@ -569,10 +585,10 @@ packages: dependency: transitive description: name: synchronized - sha256: "93b153dcb6a26dcddee6ca087dd634b53e38c10b5aa163e8e49501a776456153" + sha256: "61894a1956de6b4fc1aefd0892e109514a1a706cbece3ac59decd90ff5a7a423" url: "https://pub.flutter-io.cn" source: hosted - version: "3.4.1" + version: "3.4.1+1" term_glyph: dependency: transitive description: @@ -681,10 +697,10 @@ packages: dependency: transitive description: name: vector_graphics_compiler - sha256: "142a9146f447d15b10bdc00e21d5f4d83e5b32bb5f8f8f5a04c75311344923a3" + sha256: "4dca4feb77dc3ec7f6e27e49c53241eb8217f55e4f9b12599a27f8903bca5682" url: "https://pub.flutter-io.cn" source: hosted - version: "1.2.6" + version: "1.3.0" vector_math: dependency: transitive description: @@ -713,18 +729,18 @@ packages: dependency: transitive description: name: win32 - sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e + sha256: ba6f4bba816c8d7e3c1580e170f3786d216951cc6b94babc3b814c08d2cb2738 url: "https://pub.flutter-io.cn" source: hosted - version: "5.15.0" + version: "6.3.0" win32_registry: dependency: transitive description: name: win32_registry - sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852" + sha256: "73b1d78920a9d6e03f8b4e43e612b87bf3152a0e5c5e5150267762b7c4116904" url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.5" + version: "3.0.3" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 7a361ba..eb15012 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -30,8 +30,8 @@ environment: dependencies: flutter: sdk: flutter - permission_handler: ^11.3.0 - device_info_plus: ^10.1.0 + permission_handler: ^12.0.3 + device_info_plus: ^13.2.0 cupertino_icons: ^1.0.8 sqflite: ^2.3.0 path_provider: ^2.1.0 @@ -56,7 +56,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^5.0.0 + flutter_lints: ^6.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec