跟着官方文档集成了一遍,由于是英文,某些单词理解的有偏差,造成了一些问题,在此记录一下。官方文档地址:Integrate a Flutter module into your Android project | Flutter
官方提供了AS和VScode两种方式,这里只实践了AS的方式。
步骤:
1.打开一个AS工程
2.点击 File > New > New Flutter Project,弹出提示框,这里要安装好Flutter和Dart插件,才能看到new Flutter Project选项
3.创建flutter_module项目
这里介绍以源码形式集成,方便Flutter代码修改和调试
添加的代码:
setBinding(new Binding([gradle:this]))
evaluate(new File(settingsDir.parentFile,'flutter_module/.android/include_flutter.groovy'))
build完成后:
如果报这个错:
Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed to apply plugin class 'FlutterPlugin'.
解法:setting.gradle 里的 RepositoriesMode 模式从 FAIL_ON_PROJECT_REPOS 改为 PREFER_PROJECT
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.PREFER_PROJECT)
repositories {
google()
mavenCentral()
}
}
# 三种模式解释
# FAIL_ON_PROJECT_REPOS → 工程或工程的插件设置了仓库,构建直接报错抛异常
# PREFER_PROJECT → 工程设置了仓库优先使用工程配置的,忽略settings
# PREFER_SETTINGS → 通过工程单独设置或插件设置的仓库,都会被忽略
构建过程还可能提示某些依赖库下载失败:
这里就集成好了,目录如下
多了一个flutter库,然后在app/build.gradle中依赖这个库
dependencies {
implementation project(':flutter')
}
跑完,打开 AndroidManifest.xml 清单文件加下 FlutterActivity:
<activity
android:name="io.flutter.embedding.android.FlutterActivity"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize" />
接着在MainActivity中添加一个按钮,代码如下,点击就能跳转了
import io.flutter.embedding.android.FlutterActivity;
myButton.setOnClickListener {
startActivity(
FlutterActivity.createDefaultIntent(this)
)
}
👀关注公众号:Android老皮!!!欢迎大家来找我探讨交流👀