【Flutter集成】Android 项目集成 Flutter 时构建失败

        最近学习 Flutter 混合开发,按照官方方法构建失败,在尝试多种方法后终于构建成功。构建时需注意如下两点:

一、确保 gradle 插件版本不要过高

        若出现以下报错,可能是由于 Gradle 插件版本过高

> Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl.
> Namespace not specified. Please specify a namespace in the module's build.gradle file like so:

        若 Android Studio 版本过高(如 Flamingo),自动生成的 Gradle 版本是 8.0+。目前笔者尚未找到 8.0+ 版本构建混合项目成功的例子,因此建议降级。

        通过 “File -> Project Structure… -> Project” 找到修改 Gradle 插件版本与 Gradle 版本的页面,将二者版本降至 7.0 或以下。

        目前构建成功的版本号可供参考:

                Gradle 插件版本:7.0.4

                Gradle 版本:7.6.1

二、选择适合的仓库策略

        gradle 版本问题解决后,若出现如下报错,说明仓库策略可能存在问题。

Caused by: org.gradle.api.InvalidUserCodeException: Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by plugin class 'FlutterPlugin'

         打开安卓根目录下 settings.gradle 文件,修改仓库依赖策略:

dependencyResolutionManagement {
    // repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)  // 修改
    repositories {
        google()
        mavenCentral()
    }
}

        依赖策略说明:

  • PREFER_PROJECT:优先使用build.gradle中的repositories { },忽略settings.gradle中的repositories { } ;

  • PREFER_SETTINGS:优先使用settings.gradle中的repositories { } ,忽略build.gradle中的repositories { };

  • FAIL_ON_PROJECT_REPOS:在build.gradle中声明的repositories { } 会导致编译错误

        从报错中不难看出是 Flutter 端指定仓库导致无法构建,选择 PREFER_PROJECT 方式优先选择项目中指定的仓库避免出错

        确定以上两点无误后,重新构建项目应该能成功,若失败可参照站内其他博文方法。

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/ecb994b220.html