Failed to apply plugin class ‘FlutterPlugin‘.

錯(cuò)誤詳情

Android中集成flutter組件,按照官方文檔進(jìn)行:

// Include the host app project.
include ':app'                                    // assumed existing content
setBinding(new Binding([gradle: this]))                                // new
evaluate(new File(                                                     // new
  settingsDir.parentFile,                                              // new
  'my_flutter/.android/include_flutter.groovy'                         // new
))                                                                     // new

在按照官方文檔操作之后,報(bào)錯(cuò):Failed to apply plugin class ‘FlutterPlugin‘.

解決方案

修改settings.gradle文件


pluginManagement {
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)//修改這一行代碼
    repositories {
        google()
        mavenCentral()
        maven { url 'https://storage.googleapis.com/download.flutter.io' }
    }
}
rootProject.name = "AndroidFlutterDemo"
include ':app'
setBinding(new Binding([gradle: this]))                              //new
evaluate(new File(                                                     // new
        settingsDir.parentFile,                                              // new
        'flutter_module/.android/include_flutter.groovy'                         // new
))


*** 重要,解決方案原理

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

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)  //主要 是修改這里
    repositories {
        google()
        mavenCentral()
      }
}

RepositoriesMode配置在構(gòu)建中倉庫如何設(shè)置,總共有三種方式:
FAIL_ON_PROJECT_REPOS
表示如果工程單獨(dú)設(shè)置了倉庫,或工程的插件設(shè)置了倉庫,構(gòu)建就直接報(bào)錯(cuò)拋出異常
PREFER_PROJECT
表示如果工程單獨(dú)設(shè)置了倉庫,就優(yōu)先使用工程配置的,忽略settings里面的
PREFER_SETTINGS
表述任何通過工程單獨(dú)設(shè)置或插件設(shè)置的倉庫,都會被忽略

settings.gradle里配置了FAIL_ON_PROJECT_REPOS,而Flutter插件又單獨(dú)設(shè)置了repository,所以會構(gòu)建報(bào)錯(cuò),因此需要把FAIL_ON_PROJECT_REPOS改成PREFER_PROJECT。

repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)

但此時(shí)Android項(xiàng)目本身沒有設(shè)置倉庫,所有的依賴庫都會找flutter module中配置的倉庫下載依賴。所以需要在項(xiàng)目build.gradle中添加

//安卓項(xiàng)目/build.gradle
allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

重新運(yùn)行就OK了

參考文檔:https://blog.csdn.net/wanggang514260663/article/details/124934520
https://github.com/flutter/flutter/issues/99735

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容