Android工程调用Flutter篇(FlutterBoost框架) - 掘金 (juejin.cn)
Android原生集成flutter分为两种方式:源码集成和aar集成
两种方式研究对比下来,采用源码集成的方式对以后的开发相对快速方便,这边就介绍源码集成的方式。
笔者使用开发环境:
android gradle版本7.5,插件版本7.4.2,JDK版本11(必须11以上)
flutter 版本3.3.7 dart版本2.18.4
一、创建Flutter模块
二、将Flutter模块作为子项目引入Android项目
最新版本的Android studio创建的项目结构跟老版本不一样,两者特意都对接过,分别讲解下。
新版本:(JDK版本必须是11以上)
1.在product的 settings.gradle 改成如下
pluginManagement {
repositories {
google()
mavenCentral()
maven { url 'https://maven.aliyun.com/repository/public'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url "https://jitpack.io" }
}
}
dependencyResolutionManagement {
// repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 必须改成下面这行
repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
repositories {
google()
mavenCentral()
maven { url 'https://maven.aliyun.com/repository/public'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://dl.bintray.com/jetbrains/anko'}
maven { url "https://jitpack.io" }
}
}
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'gtech-flutter-sdk/.android/include_flutter.groovy'
))
include ':fluttermodule'
要点:
- jcenter() 换成 mavenCenter()
- repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 换成 repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
- 官方'fluttermodule/.android/include_flutter.groovy' 换成 'flutter目录名/.android/include_flutter.groovy'(App工程跟Flutter模块在同一目录下)
2.在app的 build.gradle 中添加
dependencies {
...
implementation project(':flutter')
}
3.在product的build.gradle下添加
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
然后编译项目,编译成功Android工程会增加对应Flutter模块
旧版本:(JDK版本必须是11以上)
1.在product的build.gradle下改成如下
buildscript {
repositories {
google()
mavenCentral()
maven { url 'https://maven.aliyun.com/repository/public'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://jitpack.io' }
}
dependencies {
classpath "com.android.tools.build:gradle:7.4.2"
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://maven.aliyun.com/repository/public'}
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
2.在product的 settings.gradle添加
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'gtech-flutter-sdk/.android/include_flutter.groovy'
))
include ':fluttermodule'
3.在app的 build.gradle 中添加
dependencies {
...
implementation project(':flutter')
}
然后编译项目等待成功即可。