通过module的形式将flutter嵌入已有的ios项目中后,打包发布时可能会遇到报 Flutter.framework包含了x86_64框架问题,出现这个问题基本是因为粗心。
怎么构建flutter module项目这里不提了,官方和网上博客都有。为了在已有的ios项目中嵌入flutter项目需要在ios项目中新建 Run Script Phase然后添加脚本:
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build
"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
官方文档中明确写道 drag the new build phase to just after the Target Dependencies phase
网上其他相关博客基本也会有写这一点,意思是把新建的那个Run Script Phase拖到Target Dependencies phase下面,只有确保这个就不会有x86_64的问题。
当时遇到这个问题还研究了老半天,根据别人的博客还加了移除Flutter.framework中x86_64框架的脚本,然后我加了这个脚本也是没有效果,没有效果的原因也是这个顺序的问题,同样的拖到Target Dependencies phase下面也是会生效的(顺序对的话就不需要额外添加移除x86_64的脚本)。
当时构建项目的时候看到说要拖到Target Dependencies phase下面,我理解的是新建的要在Target Dependencies phase下面而不能在它上面,然后新建一个Run Script Phase默认就是在最下面所有也就没管了,但是其实这个顺序是有讲究的,分先后执行,其他脚本都执行完了,项目都已经打包好了,你最后再去执行脚本处理Flutter.framework当然是没有效果的
所以还是要有一个严谨的态度,不要太随意
网友评论