Xcode无法找到strip-frameworks.sh目录

时间:2015-10-27 19:39:32

标签: ios xcode realm

我最近将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文档站点复制了脚本: / p>

bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"

我认为那会解决它,但事实并非如此。然后我认为问题可能出在Realm.framework或RealmSwift.framework文件中,所以我删除了它们并重新导入它们(以防万一我搞砸了)。没有改变。有谁知道这个错误是否有解决方法?

谢谢! -CodeIt

2 个答案:

答案 0 :(得分:41)

从错误消息中,您似乎没有将Realm.frameworkRealmSwift.framework添加到嵌入式二进制文件窗格中,您可以在常规中找到该窗格项目的标签,如下所示:

Embedded Binaries

要进一步验证,您可以查看选项卡 Build Phases 。它应该如下所示:

Build Phases

注意:确保 嵌入框架阶段之后运行脚本阶段。

为什么需要这个脚本?

销售的框架不仅仅是单个可执行文件,而且实际上是FAT二进制文件,它们是不同体系结构上链接可执行文件的存档。这包括arm64armv7的架构切片,这些切片是在手机上部署所必需的,以及在模拟器中运行应用程序所必需的i386x86_64

strip-frameworks.sh脚本的主要职责是处理删除不必要的切片。这减少了最终的包大小,并且是AppStore部署所必需的,因为iTunes Connect拒绝使用模拟器架构的应用程序。

更多细节

该脚本基于构建设置VALID_ARCHS工作。因为这正在改变框架的签名可执行文件,所以它还需要处理代码签名。自从引入bitcode以来,它还有进一步的后期处理作为责任。它从框架包中提取包含的*.bcsymbolmap文件,并将它们放入*.xcarchive中的正确路径。

FAQ topic on Bitcode of PSPDFKit对BCSymbolMaps是什么有很好的解释:

  

BCSymbolMap很像bitcode的dSYM。 Xcode将其构建为创建应用程序二进制文件的一部分,也适用于每个动态框架。重新标记函数/方法名称以理解crashers是必需的。

答案 1 :(得分:4)

就我而言,请在构建阶段中更改流程顺序以解决

  • 不好

11

  • 确定

555