28 | 如何在原生应用中混编Flutter工程?
该思维导图由 AI 生成,仅供参考
准备工作
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了如何在原生应用中混编Flutter工程的步骤和方法。首先介绍了在Xcode与Android Studio中建立基本工程,并对iOS工程进行改造以使用CocoaPods管理。接着,文章介绍了两种在原生应用中嵌入Flutter页面的方式:统一管理模式和三端分离模式。作者指出随着功能迭代的深入,三端代码分离模式逐渐成为主流。在介绍了Flutter混编方案后,文章重点讲解了如何集成Flutter。作者详细介绍了在已有原生工程的情况下,在同级目录创建Flutter模块,并通过命令创建Flutter模块工程。接着,文章分别介绍了Android模块集成和iOS模块集成的步骤,包括对Flutter工程产物的抽取封装和在原生工程中引入Flutter能力。最后,通过示例展示了Android工程接入的过程。整体而言,本文对于想要了解如何在原生应用中接入Flutter的开发者具有一定的参考价值。文章还提到了通过分离Android、iOS和Flutter三端工程,抽离Flutter库和引擎及工程代码为组件库,以Android和iOS平台最常见的aar和pod形式接入原生工程,实现低成本地接入Flutter模块。同时,文章也提到了进一步优化的可能性,即引入CI自动构建框架,实现更优雅的三端分离模式。
《Flutter 核心技术与实战》,新⼈⾸单¥59
全部留言(53)
- 最新
- 精选
- Geek_a9f943如果在flutter中添加了第三方依赖,打包时就会报错,所以这种方式本质上还是不适用于混合开发。最理想的状态是将flutter作为一个单独的项目,然后把最终产物提供给android,ios,这样原生的开发人员也不需要安装flutter运行环境。这一节可以当作是混合开发的预习,希望老师后续能把混合开发讲的更彻底一些,毕竟这才是flutter存在的主要目的
作者回复: Flutter的插件机制只是一层弱依赖,Flutter module并不会关心这堆代码的运行时来源,所以打包并不会顺藤摸瓜携带Native的依赖库。Native的依赖库是需要原生工程去管理的,所以如果你的Flutter module依赖的原生插件有其他的底层依赖库,请依次找到他们,并在原生Android工程中的build.gradle、iOS工程中的Podfile里把原生插件所依赖的原生库也声明为依赖
2019-09-1625 - 千の星老师,按照您的混编方法,再 flutter build apk --release,之后生产的aar/assets/flutter_assets/,里面缺少isolate_snapshot_data,isolate_snapshot_instr,vm_snapshot_data,vm_snapshot_instr。aar拷贝到公司nativeapp运行到flutter就会报错:Abort message: '[FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.。请问是缺少什么环节 或者配置吗
作者回复: 参考下这个issue下的解决方案:https://github.com/flutter/flutter/issues/25147 1.flutter clean 2.cd .android 3./gradlew clean 4./gradlew assembleRelease
2019-12-0323 - 颜为晨包体积最少会增加多少呢?
作者回复: iOS 15MB左右,安卓5MB左右
2019-09-102 - 许童童老师,三端分离的话,是要建三个git仓库吗?还是有什么其它的方式管理?
作者回复: 三端工程分别管理,一个工程一个仓库
2019-08-3122 - 矮个子先生😝对于flutter module的测试,可以手动添加入口,以IDEA为例,add configurations-> + ->flutter -> name随便取个标识,Dart entrypoint指明入口dart文件,比如main.dart,其他不用管,这样可以边编写flutter时边看效果了
作者回复: 赞
2019-09-041 - 啥玩意儿啊老师,ios启动后白屏 Engine run configuration was invalid. Could not launch engine with configuration. 是打包环节出现问题了吗
作者回复: 试试 flutter clean flutter build ios --release
2019-12-062 - 八面玲珑老师,iOS 构建报这个错怎么处理呀 BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Debug === Code Signing Error: No profiles for 'com.****.***' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.lvdingtao.blackHoleModule'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild.
作者回复: 你需要在runner工程里设置一下iOS开发证书
2019-12-05 - 17岁码农想当架构师为什么从安卓原生工程进入flutter页面时先是黑屏一会儿,然后才出来页面?
作者回复: 你换成release再试一次
2019-11-27 - 谭鹏Flutter.framework里面 没有headers 文件夹 clean了好多遍
作者回复: 打开我给的demo链接里.travis.yml文件,参考里面before_deploy写的脚本执行步骤排查原因
2019-11-21 - 谭鹏Flutter build ios 后 没有发现app 和 flutter framework
作者回复: 打开我给的demo链接里.travis.yml文件,参考里面before_deploy写的脚本执行步骤排查原因
2019-11-202