jamiechoo

 

Flutter 项目中的 Gradle 配置警告,Apps targeting Android 12 and higher are required to specify an explicit value for android:exported,已弃用的 apply 方法来应用 Gradle 插件

你遇到的错误与 Flutter 项目中的 Gradle 配置和 Android 12 的新要求相关。下面是逐步解决这些问题的方案:

1. 解决 android:exported 问题

Android 12 及更高版本要求在 AndroidManifest.xml 中的每个有 intent-filterActivity 必须显式地声明 android:exported 属性,否则会报错。你可以通过以下步骤来修复:

步骤

  1. 打开 AndroidManifest.xml 文件,路径为:

    /Users/xiqiang.Zhu/Downloads/flutter_ys7-0.2.6/example/android/app/src/main/AndroidManifest.xml
  2. 找到 <activity> 标签,并确保它们都有 android:exported 属性。如果没有,则手动添加。android:exported 可以是 truefalse,具体取决于你的应用是否允许其他应用启动这个 Activity

例如

<activity
android:name=".MainActivity"
android:exported="true" <!-- 必须显式声明 -->
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|screenLayout|density|layoutDirection"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<intent-filter>
  <action android:name="android.intent.action.MAIN"/>
  <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
  1. 对所有有 intent-filterActivity 都进行此更改。

2. Flutter 的 Gradle 插件应用方式已过时

你还收到了 Flutter 提示的 apply 方式已被弃用的警告。Gradle 的插件应用方法应从原先的 apply 语法迁移到声明式的 plugins 块。

修复方法

  1. 打开 android/build.gradle 文件。

  2. 在该文件的顶端,你会看到类似这样的代码:

    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    apply from: "$flutterRoot/packages/flutter_tools/gradle/app_plugin_loader.gradle"
  3. 修改为声明式的 plugins 块,具体如下:

    plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'com.google.gms.google-services' // 如果有这个插件的话
    }

    然后移除旧的 apply 语句。

另外

在某些情况下,Flutter Gradle 插件可能仍会通过 apply from 使用。Flutter 团队正在推荐迁移,因此你可以参考 Flutter 官方文档中的迁移指南: Flutter Gradle Plugin Apply

3. 解决 KGP 版本检测警告

这个警告通常与 Kotlin Gradle Plugin (KGP) 版本相关,但它本身不会阻止项目运行。如果你还没有在项目中显式声明 Kotlin Gradle Plugin 版本,可以在 android/build.gradle 中添加:

buildscript {
ext.kotlin_version = '1.8.0' // 更新为你想使用的 Kotlin 版本
    repositories {
      google()
      mavenCentral()
      }
dependencies {
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      }
    }

4. 清理和重新构建项目

在进行这些更改后,清理并重新构建你的项目:

flutter clean
flutter pub get

然后再运行项目:

flutter run

总结

  • AndroidManifest.xml 中添加 android:exported 属性。
  • 将 Gradle 插件的应用方式迁移为声明式的 plugins 块。
  • 声明并检查 Kotlin Gradle Plugin 版本。
  • 清理和重新构建项目。

通过以上步骤,你应该能够修复这些错误并正常构建和运行应用。

posted on 2024-09-18 05:21  jamiechoo  阅读(191)  评论(0)    收藏  举报

导航