当前位置:   article > 正文

【Flutter集成】Android 项目集成 Flutter 时构建失败_could not create an instance of type com.android.b

could not create an instance of type com.android.build.api.variant.impl.libr

        最近学习 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 文件,修改仓库依赖策略:

  1. dependencyResolutionManagement {
  2. // repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  3. repositoriesMode.set(RepositoriesMode.PREFER_PROJECT) // 修改
  4. repositories {
  5. google()
  6. mavenCentral()
  7. }
  8. }

        依赖策略说明:

  • 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 方式优先选择项目中指定的仓库避免出错

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/317482
推荐阅读
相关标签
  

闽ICP备14008679号