今天升级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.framework和Flutter.framework两个库,如下图所示。

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

然后,在【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

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

$(inherited) -framework Flutter

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

Logo

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

更多推荐