我最近将 Xcode 更新到版本 7.1,其中包括 Swift 2.1。我安装了 Swift 2.1,没有遇到任何问题。在尝试运行我的项目后,我意识到我需要获取最新版本的 Realm,因为之前的版本不支持 Swift 2.1。我删除了旧框架并导入了 Realm 0.96.2。每当我运行时,我现在都会收到此错误:
bash: /Users/userName/Library/Developer/Xcode/DerivedData/appName-ghiroqitgsbvfhdqxsscyokyoouz/Build/Products/Debug-iphoneos/appName.app/Frameworks/Realm.framework/strip-frameworks.sh: No such file or directory
我怀疑问题在于您希望将应用程序提交到 App Store 时所需的脚本,因此我删除了运行脚本阶段,添加了一个新阶段,并从 Realm 文档站点复制了脚本:
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
我以为这样就能解决问题,但事实并非如此。然后我认为问题可能出在 Realm.framework 或 RealmSwift.framework 文件中,所以我删除了它们并重新导入它们(以防万一我搞砸了)。没有改变。有谁知道这个错误是否有解决办法?
谢谢!
-CodeIt
从错误信息来看,你好像没有添加Realm.framework
and RealmSwift.framework
to the 嵌入式二进制文件窗格,您可以在General您的项目选项卡,如下所示:
要进一步验证,您可以检查选项卡构建阶段。它应该如下所示:
注意:确保运行脚本阶段到来after the 嵌入框架 phase.
为什么需要这个脚本?
供应商的框架不仅仅是单个可执行文件,而且实际上是 FAT 二进制文件,它们是不同架构上链接的可执行文件的存档。这包括架构切片arm64
and armv7
,这是在手机上部署所必需的以及i386
and x86_64
这是在模拟器中运行应用程序所必需的。
The strip-frameworks.sh
脚本的主要职责是删除不必要的切片。这可以减少最终包的大小,并且对于 AppStore 部署来说是必需的,因为 iTunes Connect 拒绝具有模拟器架构的应用程序。
更多细节
该脚本基于构建设置运行VALID_ARCHS
。因为这正在更改框架的签名可执行文件,所以它还需要处理代码签名。自从引入位码以来,它还承担了进一步的后处理的责任。它提取包含的*.bcsymbolmap
框架包中的文件并将它们放入正确的路径中*.xcarchive
.
The PSPDFKit Bitcode 的常见问题解答主题 https://pspdfkit.com/guides/ios/current/faq/bitcode/#toc_bcsymbolmaps关于 BCSymbolMap 是什么有一个很好的解释:
BCSymbolMap 很像位码的 dSYM。 Xcode 将其构建为创建应用程序二进制文件的一部分,并且也为每个动态框架构建。需要重新符号化函数/方法名称才能理解崩溃。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)