Android项目上要集成Flutter模块,这样IOS研发用Flutter开发的功能模块,可以直接移植应用在Android上,降低开发成本。由于Flutter官网文档已经很久没更新了,有些配置信息是过期的,记录下Flutter模块集成中碰到的坑。
官网文档地址:将Flutter集成到现有应用
一、Android Studio 版本问题
集成配置的时候已安装的Android Studio版本是 Android Studio Bumblebee,这个版本可以正常安装Flutter插件和Dart插件,也可以正常创建Flutter工程,但是不能创建Flutter Module,创建的路径是在File->New->New Flutter Project,而不是在File->New->New Module。
在Bumblebee上点击创建之后弹出异常提示弹窗“At least one platform must be selected”,但实际有选择平台,并且配置模块路径下没有任何文件生成。
接着版本换成了官网上的4.2.2,这个版本的Firebase Services插件有问题,无法卸载更换版本,原始工程都无法编译。最后的版本换成 Android Studio Flamingo | 2022.2.1 Patch 2 正常了。
Android Studio Flamingo 网盘下载链接: https://pan.baidu.com/s/1TLd-_1k4wgdwTJKNYzQEEw 提取码: weny
项目的命令要用下划线隔开,Project Type 选择Module,Language和Platforms选项可以在切换到Module前修改。
资源地址:
二、Flutter 模块集成配置
1、不需要引入JAVA 11版本
目前工程里面配置的是JAVA 8版本,并没有任何异常,如果没有用到JAVA 11中的特性,可以不升级到JAVA 11。
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
2、Flutter模块集成
将 Flutter 模块作为子项目添加到宿主应用的 settings.gradle 中的路径需要加上项目的根目录,如下图tangoapp-android是项目的根目录,evaluate中配置的路径参数就是:<项目目录名>/<Flutter模块目录名>/.android/include_flutter.groovy。
setBinding(new Binding([gradle: this]))
evaluate(new File(
settingsDir.parentFile,
'tangoapp-android/tango-flutter/.android/include_flutter.groovy'
))
左侧最顶部的TanGoApp模块是集成之后自动生成的,集成项目编译之后生成的APK路径变成了:
TanGoApp/app/build/intermediates/apk/tango
3、添加Flutter模块的依赖
在<Your Project>/app/build.gradle
dependencies {
implementation project(':flutter')
}
在Android Studio换成Flamingo版本之后,项目依赖的compileSdkVersion、kotlin和gradle插件版本也需要对应升级,升级涉及到的代码接口需要修改的要对应调整下,这边碰到的就是Animator.AnimatorListener回调接口的参数变成非空的。
如果在触发版本编译之后出现找不到module_plugin_loader.gradle文件,选中pubspec.yaml文件,触发下Pub upgrade和Pub get生成需要的配置文件,这边需要开下科学上网工具。
Flutter项目集成之后,后续只需要同步lib文件夹下的Dart文件修改和配置文件的修改。测试集成之后编译版本,生成的APK文件比之前大了一倍。
三、Jenkins 编译配置
如果按照官方文档直接配置get、clean、和build编译步骤会出现各种问题,查了资料没法直接配置生成Android代码的compileSdkVersion、minSdkVersion、kotlin版本之类的参数,这些参数必须和集成项目的配置参数一致,最好是在本地编译生成.android目录之后,修改生成代码的compileSdkVersion、minSdkVersion、kotlin等参数让工程编译正常,再把.android目录下的文件上传到代码仓库。
Jenkins上的flutter的编译配置保留flutter pub get即可,执行这个命令的步骤放在Build Steps的最前面。
转载请注明出处:陈文管的博客 – Android 集成 Flutter 模块
扫码或搜索:文呓
微信公众号 扫一扫关注