请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

Failed to apply plugin class 'FlutterPlugin'.问题解决办法

在网上找到的解决办法和老师的教程,结合整理了一下

1.创建Android项目
2.Android项目平级文件夹下创建Flutter module
3.Android项目中 settings.gradle添加如下代码:

setBinding(new Binding([gradle: this]))                                 
evaluate(new File( 
settingsDir.parentFile,                                                
'<flutter module项目名>/.android/include_flutter.groovy'                          
))             

注意:gradle6.8后 settings.gradle新增了如下配置

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
    }
}

RepositoriesMode配置在构建中仓库如何设置,总共有三种方式:
FAIL_ON_PROJECT_REPOS
表示如果工程单独设置了仓库,或工程的插件设置了仓库,构建就直接报错抛出异常
PREFER_PROJECT
表示如果工程单独设置了仓库,就优先使用工程配置的,忽略settings里面的
PREFER_SETTINGS
表述任何通过工程单独设置或插件设置的仓库,都会被忽略

settings.gradle里配置了FAIL_ON_PROJECT_REPOS,而Flutter插件又单独设置了repository,所以会构建报错,因此需要把FAIL_ON_PROJECT_REPOS改成PREFER_PROJECT。

repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)

但此时Android项目本身没有设置仓库,所有的依赖库都会找flutter module中配置的仓库下载依赖。所以需要在项目build.gradle中添加

//FlutterHybridAndroid/build.gradle
allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

4.添加:flutter依赖

//FlutterHybridAndroid/app/build.gradle
...
dependencies { 
implementation project(
':flutter'
)
...
}

正在回答 回答被采纳积分+3

1回答

CrazyCodeBoy 2021-12-29 09:43:46

总结的不错,点赞

0 回复 有任何疑惑可以回复我~
  • 请问楼主说的 "settings.gradle里配置了FAIL_ON_PROJECT_REPOS,而Flutter插件又单独设置了repository,所以会构建报错" 中的 "Flutter插件" , 这个插件这里是指我们单独创建的 flutter_module 这个工程的意思吗? 对于android工程来说  通过 `include ':flutter_module'` 这样引入的工程算作是一个“插件”? 我可以这样理解吗
    回复 有任何疑惑可以回复我~ 2022-08-24 14:08:12
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信