今天升级Xcode之后,使用打包机打iOS包的时候,报了一个错,报错的信息如下:

note: Using new build system
    note: Building targets in parallel
    note: Planning build
    note: Constructing build description
    error: Building for iOS, but the linked and embedded framework 'App.framework' was built for iOS Simulator. (in target 'Runner' from project 'Runner')

大概的意思是,打包使用的App.framework是模拟器的。按照官网的介绍,我首先使用flutter clean Clean下了一下项目,然后删除ios/Flutter/App.framework的App.framework。当然也可以使用命令来删除App.framework,如下所示。

rm -rf ios/Flutter/App.framework

不过,执行上面的步骤后,仍然还是报错。如果还是报错,接下来我们继续往下看。 使用Xcode打开项目,然后点击左侧Navigator,然后删除App.frameworkFlutter.framework两个库,如下图所示。

e12ca241f8e490b740072e3c07710c87.png

然后依次选择【Runner】->【Target】 ->【 Build Phases】 -> 【Link Binary With Libraries】和【Embed Frameworks】中,确认下图红框中没有App.frameworkFlutter.framework,有的话直接删除,如下图所示。

30acc92c664097988903e18ff9a14eff.png

然后,在【Build Phases】的 Thin Binary选项中的添加如下脚本:

/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed
/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" thin

或者

/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" embed_and_thin

320c8a22d95ca2b29b3c40e99734a1dd.png

接下来,切换到【Runner Target】的Build Settings面板,双击“Other Linker Flags”选项,在弹出窗口中点击+号,并输入如下代码。

$(inherited) -framework Flutter

30a75f7246f2e2569c83477dd62c6a27.png

然后,再次执行打包就没有任何问题了。遇到的问题,记录下。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐