集成FlutterModule到android应用,进行混合开发

233 阅读1分钟

跟着官方文档集成了一遍,由于是英文,某些单词理解的有偏差,造成了一些问题,在此记录一下。官方文档地址: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老皮!!!欢迎大家来找我探讨交流👀