macos 12.2.1 , iOS flutter混合工程,启动崩溃,报错 dyld: Library not loaded: @rpath/App.framework/App
[Add2App IOS] Instant crash on MacOS12.0.1 xcode13.1 Library not loaded: @rpath/App.framework/App #92896
解决方法
- 卸载cocoapods
sudo gem uninstall -n /usr/local/bin cocoapods cocoapods-core cocoapods-deintegrate cocoapods-downloader cocoapods-plugins cocoapods-search cocoapods-stats cocoapods-trunk cocoapods-try
- 卸载 ruby-macho
sudo gem uninstall ruby-macho
- 重新安装cocoapods
sudo gem install -n /usr/local/bin cocoapods
以上的主要目的是 ruby-macho 升级到2.5.0 以上。
有的人升级cocoapods 就可以,有的不行。不行的是因为升级cocoapods的时,ruby-macho 没有对应升级。
解决过程以及原因
我们的flutter版本是2.0.5 ,mac 系统升级到macos 12 之后,有的小伙伴会启动崩溃,报上面的错。
对于这个问题网上有很多解决版本:
升级flutter 到最新
升级cocoaPods
https://juejin.cn/post/7036177470541807624加脚本
https://blog.csdn.net/FlyingKuiKui/article/details/123728932
除了上面提到的方法,还升级了gem,但是还是不行。
https://blog.csdn.net/lzh253985690/article/details/104279885
具体原因和解决办法在这个issues中有人指出了
https://github.com/flutter/flutter/issues/92896#issuecomment-967120990
这个有人提到
Same problem here on macOS 12.0.1 & Xcode 13.1.
After some investigations, I found that when building on macOS Monterey, two new load commands (`LC_DYLD_EXPORTS_TRIE` & `LD_DYLD_CHAINED_FIXUPS`) are inserted into `App.framework`, which makes the old version of `ruby-macho` not so happy.
Problem disappeared after upgrading `cocoapods` to 1.11.0 and `ruby-macho` to 2.5.1\. See [CocoaPods/CocoaPods#10390](https://github.com/CocoaPods/CocoaPods/issues/10390)
简单说就是由于 ruby-macho 版本不对,导致少了下图红框中的代码
解决办法就是 升级
cocoapodsto 1.11.0 and
ruby-machoto 2.5.1
原本想直接安装 ruby-macho 2.5.1
ruby-macho 最新版本是 3.0
https://github.com/Homebrew/ruby-macho/releases
尝试之后,还是没能安装ruby-macho 2.5.1
下面这个命令只能安装最新的ruby-macho ,不能指定版本
gem install ruby-macho
把ruby-macho 2.5.1 下载下来之后,直接放到对应的目录,还是不行。
应该有直接安装的方法。
最终通过上面的方法安装了ruby-macho 2.5.1