-
Notifications
You must be signed in to change notification settings - Fork 126
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Flutter与Android混合编码配置笔记 #12
Comments
哇,写的这么详细。辛苦了。这些问题应该马上在master上修复好了 flutter/flutter#35217 非常感谢你对社区对贡献 |
请问,我在Flutter module下的.android/app中的build.gradle中添加:
运行Flutter module,报的错:
请教怎么解决,我主要做iOS,Android不懂,多谢指点一下! |
如果Android项目本身的 如果你的项目是Android原生和Flutter混编,应该找Android开发的同事(或者看Android原生项目的源码),看一下 |
我保持了一致,并且在AS的Build Variants中也都选择成一致的,仍然出现了此问题,很困惑。
我将这些设置同步到了flutter模块中的gradle文件中,在选择debug时可以正常的调起flutter模块,但是如果我选择的是ceshi这个buildtype,仍然会出现
|
Flutter与Android混合编码配置笔记
学习
Flutter
一小段时间,对纯Flutter
项目有了一些基本的了解,但更趋近实际开发的应该是将Flutter
模块作为一个依赖库添加到原生的Android
项目中。本文笔者将尝试分享个人针对
Flutter
与Android
混编时的配置步骤,以及踩坑过程。一、初始化Flutter-Module
参考 官方文档 ,首先需要确认
Flutter-Module
依赖库文件夹的位置,简单来说,这里有两种方式:其实这些方式没什么区别,但是个人更倾向于第二种,我们在项目文件夹的目录层级下对
Flutter-Module
文件夹进行 创建 并 初始化:成功后,
Flutter-Module
和Android
项目本身应该是这样的(红框内的两个项目):二、配置Android项目
接下来我们需要将这个项目和刚刚创建的
module-flutter
进行依赖,我们先打开Android
原生项目,并为项目根目录下的settings.gradle
文件中添加如下配置:如果
module-flutter
模块是创建在项目内部,那么需要稍微改一改:然后,我们需要打开
app
的build.gradle
文件,添加对flutter
的依赖:这样,对于简单的
Android
原生项目而言,Flutter
已经配置成功了。三、AndroidX的迁移
由于笔者的项目迁移了
AndroidX
, 但是低版本的Flutter
命令生成的module
默认依赖的是support
包, 因此我们需要将默认support
的依赖手动迁移到AndroidX
。手动迁移的方式有两种:
Android Studio
自动迁移 过去。首先通过
Android Studio
打开flutter-module
,这时候是不能直接迁移AndroidX
的,需要通过flutter
-Open Android module in AS
方式新打开一个窗口。这样编译成功后,就可以点击
Refactor
-Migrate to AndroidX
进行迁移了,后续步骤网上有很多,不赘述。Flutter
-build.gradle
文件,对依赖进行更新:手动配置网上有很多博客,不赘述。
需要注意的是,一定要保证
Flutter
模块中对AndroidX
相关依赖的版本和实际原生项目中相关依赖的版本是一致的,否则可能会导致依赖冲突。四、多模块项目的配置
上文说到,简单的项目已经配置完毕了,但是多模块的项目来说则稍显复杂,比如笔者的项目:
首先,需要在底层
library
(本文中是library-core
)的build.gradle
文件中添加对flutter
的依赖:添加之后并进行同步,原生的项目就会对
settings.gradle
文件中指向的module-flutter
文件夹进行依赖。同步、编译成功后,我运行了项目,但我很快遇到了问题:
五、ProductFlavors的坑
这个问题纠结了很久,最后在 这个issue中 找到了答案:
经 @yk3372 大佬提示,原来是以为项目中配置了
ProductFlavors
, 因此,Flutter
模块中对应的build.gradle
文件也需要进行对应的配置,比如这样:buildTypes { release {} debug {} } flavorDimensions "environment" productFlavors { dev {} qa {} prod {} }
配置好之后,还需要手动将相关
module
的ProductFlavors
配置相同,否则会提示一堆错误,比如我的一个原生的module
依赖了flutter
的module
,它们就必须都保持同一个状态:???这是不是意味着所有的
module
的build.gradle
都配置相同的productFlavors
信息?实践给予我答案,是的。
虽然折腾了很久,还好前人栽树,后人乘凉,解决了问题还是
happy ending
,Github
大法好。六、更多Flutter混编姿势
本文提供了 官方文档 提供混合开发的集成方式,实际上,国内很多大厂都分享过相关的技术文章,这里也一并放出来:
闲鱼Flutter混合工程持续集成的最佳实践
头条Flutter混合工程实践
2019 最前沿的几个 Flutter 实践:微信、咸鱼、美团
关于我
Hello,我是却把清梅嗅,如果您觉得文章对您有价值,欢迎 ❤️,也欢迎关注我的博客或者Github。
如果您觉得文章还差了那么点东西,也请通过关注督促我写出更好的文章——万一哪天我进步了呢?
The text was updated successfully, but these errors were encountered: