现有iOS工程引入flutter配置方式-记录问题和经验

现有iOS项目引入flutter模块。

方式一:直接cocoapods引入fluttermodule(flutter工程必须是module类型)工程的路径。

这个网上资料很多,也是flutter官网推荐的方式,可以参考这篇文章:https://www.jianshu.com/p/e3e689e77280  

优点是快,方便。  缺点是  原生项目和flutter项目 太过依赖

 

方式二:将flutter工程打包成framework,再放入iOS项目工程里。

可以参考文章:https://www.jianshu.com/p/bad5d57a086b 这里写的方式二

1. 命令行里,cd到flutter工程目录下,运行命令输出framwork:flutter build ios-framework --output=some/path/MyApp/Flutter/       可以加--no-profile 之类的 去掉一些打包项比如:

flutter build ios-framework --no-profile --output=/Users/yzx/Desktop/MyApp/Flutter

2. 在iOS工程的 target, Build Settings 里 找到 Framework Search Paths , 增加  $(PROJECT_DIR)/Flutter/$(CONFIGURATION)    这里不要选择debug或者release,而是编辑总体项自动选择 。 将Flutter文件要放在对应路径位置。PROJECT_DIR工程目录下。

3.把打包出来的Flutter文件里的所有动态链接库(随意选Debug或Release一个目录中的)(我选的是Release)拖入工程General -> Framework,Libraries那面板,设置为Embed & Sign(这一步我倒是没碰到,也不知道是不是最新fluttersdk的缘故)。(注意:静态库,比如FlutterPluginRegistrant.framework不要加入,否则不能上架AppStore,判断其他packge插件生成的framework是静态还是动态,请看官网给的链接

注意,FlutterPluginRegistrant.framework不要加入,我这边加入尝试,发现工程运行的时候提示 Unable to install  

4.编辑MyApp.xcodeproj/project.pbxproj文件:查找替换所有path = ../Flutter/Debug或Release/xx.framework;替换为path = "../Flutter/$(CONFIGURATION)/xx.framework";(注意添加引号 ")。可以根据Debug或Release编译时使用对应的framework。注意:flutter的生成的debug的framework可以运行在模拟器和真机,release的只能运行在真机。   --- 这一步我这边尝试也没看到需要改动的地方。可能新版本flutter有所支持吧。
 
5.bitcode设为了NO,否则这里遇到了编译release版出错
最后注意:flutter工程以后开发时如果增加了新的packge,要对新增加生成的framework做3-4步骤(若为静态库则不用加入)
 
 
 
 
 
 

 

 

热门相关:首席的独宠新娘