将 Flutter module 集成到 Android 项目踩坑记录

651 阅读1分钟

一、首先声明下我的开发环境和版本:

1、Flutter SDK版本 :3.22.3

2、Flutter项目创建默认android的Gradle版本:gradle-7.5-all.zip

3、Flutter项目创建默认android的Gradle插件版本:7.3.0

4、Android原生项目Gradle版本:gradle-8.7-bin.zip

5、Android原生项目Gradle 插件版本:8.1.1

6、Android Studio 版本:2024.1.1

二、创建过程

  1. 创建原生项目

  2. 创建Flutter Module

  3. 引入

将 Flutter 模块作为子项目添加到宿主应用的 settings.gradle 中:

include(":app")                                 
setBinding(new Binding([gradle: this]))                                
evaluate(new File(                                                   
        settingsDir.parentFile,                                        
        'flutter_module/.android/include_flutter.groovy'             
))

(注:flutter_module为你创建的model名称,settingsDir.parentFile代表flutter_module与Android项目根目录同级)

在你的应用中引入对 Flutter 模块的依赖:

dependencies { implementation(project(":flutter")) }

(注::flutter是固定的,一定不要变更名称)

3.不要着急运行编译,项目setting.gradled修改如下:

pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        //gradlePluginPortal()
        maven {url "https://storage.googleapis.com/download.flutter.io>" }//新增
    }
}

dependencyResolutionManagement {
//    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositoriesMode = RepositoriesMode.PREFER_SETTINGS//修改为这个
    repositories {
        google()
        mavenCentral()
        maven {url "https://storage.googleapis.com/download.flutter.io" }
    }
}

(注:maven {url "storage.googleapis.com/download.fl…" } 是一定要添加的,否则运行时会无法下载lutter.io相关的包,导致编译错误,如果还是无法下载,还可以考虑使用其他镜像 比如:maven { url 'mirrors.tuna.tsinghua.edu.cn/flutter/dow…' })

google()、mavenCentral()可以更改为阿里镜像:

阿里常用镜像有以下几个,也可以无脑全部添加

maven { setUrl("https://maven.aliyun.com/repository/public") }
maven { setUrl("https://maven.aliyun.com/repository/google") }
maven { setUrl("https://maven.aliyun.com/repository/central") }
maven { setUrl("https://maven.aliyun.com/repository/jcenter") }
maven { setUrl("https://maven.aliyun.com/repository/gradle-plugin") }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'https://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }

番外篇:如果Gradle下载慢或者下载失败可以使用腾讯的镜像,参考如下:

#distributionUrl=https://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=https://mirrors.cloud.tencent.com/gradle/gradle-8.7-bin.zip

参考地址:

Flutter中文网 docs.flutter.cn/add-to-app/…

在Android原生项目中创建 Flutter模块blog.csdn.net/Lan_Se_Tian…