flutter modules打包成iOS framework失败,需要删除armv7

790 阅读2分钟
本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

通常情况下,flutter modules开发完成之后,集成到原生的iOS项目中之前,需要将flutte工程打包成framework,如果flutter工程依赖了一些对架构有限制的框架,可能会在打包过程中报错

WechatIMG1300.png 提示某个插件因为存在armv7导致出现错误。 所以我们需要对将flutter_modules中 .ios中的Runner工程build setting中Architectures中的armv7去掉

WechatIMG1301.png 操作完成之后,重新执行flutter build ios --release --no-codesign即可。 以上方法可以解决当前问题,如果开发同学不经常打包framework,这么解决是完全没问题的。


但是如果这个操作是在jenkins上完成的呢?我们需要自动化打包等一系列操作,我们需要.iOS工程是可配置,可编译,可打包的,所以我们需要做一个一劳永逸的办法:打开已经修改好配置的工程文件(用一些可以显示源码的编辑器打开)

WechatIMG7.png 用vscode打开工程文件 WechatIMG57.png 复制整个页面内容备用。 下面将xxx/flutter/packages/flutter_tools/templates/module/ios/host_app_ephemeral/Runner.xcodeproj.tmpl/project.xcworkspace这个路径下的模板,用vscode打开,然后把上面的内容替换掉模板上的内容

WechatIMG45.png 最后保存退出,这样做的好处是以后无论是否进行flutter clean操作,都不会影响.ios工程的配置项,从而保证各项依赖的正确执行。 后记:flutter sdk的更新频率很高,并且官方也没有所谓的稳定版本,迭代的版本号也毫无规律,所以如果公司项目比较古老,毕竟依赖比较繁杂,那么笔者个人不建议频繁升级flutter的sdk,在多个版本中找到一个能运行的稳定版本即可,那么对这个版本进行定制化操作也未尝不可,作为iOS开发者,我觉得应该走出xcode的舒适圈,逐渐拥抱整个前端技术栈,学会定制自己常用的工具版本。