介绍
本来想写个标题,想了一下,没有什么比直接贴这个错误信息更好的方式了。
最近正在处理Flutter的集成。写好flutter代码之后,准备开始运行,例行的看了下我的git改动。嗯?有几个工程文件改动不认识,不是我的改动,于是discard掉,点击运行。程序直接崩溃。我改了什么?怎么办?。唯一有的报错就是
Library not loaded: @rpath/App.framework/App
错误解决过程
错误解决尝试
我的错误解决过程包括但不限于:
- 工程设置VALIDATE_WORKSPACE = YES;
- 执行flutter clean
- 执行flutter build iOS
这里额外有个小的注意事项,刚开始我以为这个是要构建一个iOS应用。但并不是,这是用来构建MacOS的iOS应用--也就是运行于MacOS的模拟器。 官方解释如下:
Usage: flutter build <subcommand> [arguments]
-h, --help Print this usage information.
Available subcommands:
ios Build an iOS application bundle (Mac OS X host only).
ios-framework Produces .xcframeworks for a Flutter project and its plugins
for integration into existing, plain Xcode projects.
如果你使用了flutter build iOS 就会得到
Building for iOS, but the linked framework 'App.framework' was built for macOS.
希望有同样问题的小伙伴绕过这个坑。
- 将项目clean build folder
- 升级cocoaPod到最新版
- 重新安装Xcode: 没错。我把Xcode都重新安装了:(
错误历程
也是在网上搜一顿搜索,毫无头绪、历时整整一天。试一个方案就运行一次。然后崩溃一下。沮丧。
正确解决方案
终于到了今天中午,遇到了曙光。感谢kxifenger提供的解决方案https://github.com/flutter/flutter/issues/92896
按照方案的说法是:
在我们的Pods工程里有一个Targets Support Files的文件夹,其中有一个Pods-Project Name-frameworks.sh
的文件。在文件里会有install的配置
if [[ "$CONFIGURATION" == "Debug" ]]; then
install_framework "${PODS_ROOT}xx.framework"
fi
if [[ "$CONFIGURATION" == "Release" ]]; then
install_framework "${PODS_ROOT}xx.framework"
fi
在这里我们需要增加对App.framework"的安装,格式如上面所说,路径是自己的路径。
之后,执行
pod install
结语
当APP在其运行起来的时候,真是太开心了:) ,同时。再次感悟:千万千万不要看见某个不认识的代码就删了。尤其是我这个删了马上就忘记删了什么的行为,删一下几秒钟,然后痛苦一整天,反面教材,希望大家引以为戒。