现有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步骤(若为静态库则不用加入)