扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
iOS项目引入Flutter后,安装Debug包,打开Flutter界面会出现"In iOS 14+, debug mode Flutter apps can only be launched from Flutter tooling, IDEs with Flutter plugins or from Xcode"问题。
成都创新互联公司是专业的龙子湖网站建设公司,龙子湖接单;提供成都网站设计、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行龙子湖网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
解决办法如下:
用 [Xcode] 打开工程项目,在 Build Settings 的最下方找到 User-Defined,点击 + 按钮,添加一个键为 FLUTTER_BUILD_MODE ,debug设置profile模式,release设置release 模式。
本文将简单梳理一下 iOS 工程接入的 Flutter Boost 的流程,以作为前文的补充。
flutter_application_path = '../flutter_module'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
target 'FlutterHybridiOS' do
install_all_flutter_pods(flutter_application_path)
end
接着在工程根目录下运行 pod install ,即可集成上 Flutter Module。看到我们的 Pods 中多了以下几个模块,即说明集成成功。
接着在工程根目录下运行 pod install ,即可集成上 Flutter Module。看到我们的 Pods 中多了以下几个模块,即说明集成成功。
这一块直接参照 Flutter Boost 官方提供的 example 就好了:
PlatformRouterImp.h:
PlatformRouterImp.m:
可以看到,Flutter Boost 支持常规 push,也支持打开模态弹窗,也支持手动 pop。
AppDelegate.h:
AppDelegate.m:
同样的,这里可在 Native 端用两种不同的方式去打开我们在 Flutter Module 中注册好的路由名。
至此,我们成功在 iOS 工程中接入了 Flutter Boost,那就开启我们的混编之旅吧~
最近项目中要集成flutter来进行混编,但是在集成后,突然遇到一个很神奇的问题,在debug模式下,用数据线连接真机打包可以打开flutter页面,但是一旦拔掉数据线,再打开flutter页面就不行了,开始以为是因为flutterSDK的原因,但是一查资料才发现,原来是因为debug模式下flutter实现了热重载,默认的编译方式是JIV,但是iOS14+之后的系统限制了JIV这种编译方式,所以连接Xcode重新run一个release包就可以了,因为flutter在release模式下的编译方式是AOT,iOS14+的系统是支持这种编译方式的,具体解决方案如下图
再运行就可以了。
当然还有另外一种解决方案,就是修改flutter的编译配置,强制设为release
最近在集成flutter进项目
以收集编译产物并以cocopods方式集成
产物大概放入两个pod库
这个暂且叫pod1,pod1放flutter.framework,第三方plugin.a,自己写的基础plugin,比如networking,hud等等(由于是混编,不可避免存在很多原生基础组件,所以能公用的基础组件都会弄一个flutter-plugin桥接)
第二个pod2放编译之后的app.framwork,注册文件GeneratedPluginRegistrant,以及各个业务模块.a(有可能没有)结构大概如下面
podspec大概如下
主工程引入这两个pod库即可
接下来从零开始搭建上文所说的
先创建一个flutter module
这个是主flutter工程,用来集成businessModule以及生成app.framework
结构如下图
再生成一个业务工程
注意此时还需要进入example生成ios和Android工程,不然无法单独编译运行
这样 这个单独的业务模块就可以单独跑起来了
此时主flutter工程和业务工程均搭建完毕
在主工程pubspec.ymal文件讲两个工程关联
好了 接下来就是编写脚本收集产物了
编译完成之后会在flutter主工程product生成如下文件
将上面文件分类收集做成文章开头的pod1,pod2 ,在native工程引入即可
在集成flutter的过程中 踩不少坑 也阅读很多前辈的文章,在此一并感谢
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流