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

Cod*_*eIt 31 xcode realm ios

我最近将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
Run Code Online (Sandbox Code Playgroud)

我怀疑问题在于如果您希望将应用程序提交到App Store所需的脚本,因此我删除了运行脚本阶段,添加了新脚本,并从Realm文档站点复制了脚本:

bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
Run Code Online (Sandbox Code Playgroud)

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

谢谢!-CodeIt

mar*_*ius 44

从错误信息,好像,你没有添加Realm.frameworkRealmSwift.framework嵌入式二进制文件窗格中,你在找的一般项目的标签,如下图所示:

嵌入式二进制文件

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

建立阶段

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

为什么需要这个脚本?

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

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

更多细节

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

关于PSPDFKit的BitcodeFAQ主题对BCSymbolMaps是什么有很好的解释:

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

  • 构建阶段的顺序至关重要!嵌入框架后剥离框架体系结构.谢谢你让我认识到@marius (32认同)

den*_*pro 7

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

  • 不好

11

  • 好的

555