Xcode 无法找到 strip-frameworks.sh 目录
Xcode unable to find strip-frameworks.sh directory
我最近将 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 时所需的脚本,因此我删除了 运行 脚本阶段,添加了一个新脚本,并从中复制了脚本领域文档站点:
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
我以为这样可以解决问题,但事实并非如此。然后我认为问题可能出在 Realm.framework 或 RealmSwift.framework 文件中,所以我删除了它们并重新导入它们(以防万一我搞砸了)。没有改变。有谁知道这个错误是否有解决办法?
谢谢!
-CodeIt
从错误消息来看,您似乎没有将 Realm.framework
和 RealmSwift.framework
添加到 Embedded Binaries 窗格中,您可以在您项目的常规选项卡,如下所示:
要进一步验证,您可以查看选项卡构建阶段。它应该如下所示:
注意:确保 运行 脚本阶段在 Embed Frameworks 阶段之后。
为什么需要这个脚本?
出售的框架不仅是单个可执行文件,而且实际上是 FAT 二进制文件,它们是不同体系结构上链接的可执行文件的存档。这包括 arm64
和 armv7
的架构切片,它们是在 phone 上部署所必需的,以及 i386
和 x86_64
是 [=58] 上部署所必需的=]在模拟器中安装应用程序。
strip-frameworks.sh
脚本的主要职责是负责删除不必要的切片。这减少了最终包的大小,并且是 AppStore 部署所必需的,因为 iTunes Connect 拒绝具有模拟器架构的应用程序。
更多详情
该脚本基于构建设置 VALID_ARCHS
。因为那是在更改框架的已签名可执行文件,所以它还需要处理代码签名。自从引入 bitcode 以来,它也得到了进一步的 post 处理作为责任。它从框架包中提取包含的 *.bcsymbolmap
文件,并将它们放入 *.xcarchive
.
中的正确路径中
FAQ topic on Bitcode of PSPDFKit 对 BCSymbolMap 是什么有很好的解释:
A BCSymbolMap is a lot like a dSYM for bitcode. Xcode builds it as part of creating the app binary, and also for every dynamic framework. It's required for re-symbolicating function/method names to understand crashers.
在我的例子中,更改 Build Phases 中的流程顺序以解决
- 不行
- 好的
我最近将 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 时所需的脚本,因此我删除了 运行 脚本阶段,添加了一个新脚本,并从中复制了脚本领域文档站点:
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
我以为这样可以解决问题,但事实并非如此。然后我认为问题可能出在 Realm.framework 或 RealmSwift.framework 文件中,所以我删除了它们并重新导入它们(以防万一我搞砸了)。没有改变。有谁知道这个错误是否有解决办法?
谢谢! -CodeIt
从错误消息来看,您似乎没有将 Realm.framework
和 RealmSwift.framework
添加到 Embedded Binaries 窗格中,您可以在您项目的常规选项卡,如下所示:
要进一步验证,您可以查看选项卡构建阶段。它应该如下所示:
注意:确保 运行 脚本阶段在 Embed Frameworks 阶段之后。
为什么需要这个脚本?
出售的框架不仅是单个可执行文件,而且实际上是 FAT 二进制文件,它们是不同体系结构上链接的可执行文件的存档。这包括 arm64
和 armv7
的架构切片,它们是在 phone 上部署所必需的,以及 i386
和 x86_64
是 [=58] 上部署所必需的=]在模拟器中安装应用程序。
strip-frameworks.sh
脚本的主要职责是负责删除不必要的切片。这减少了最终包的大小,并且是 AppStore 部署所必需的,因为 iTunes Connect 拒绝具有模拟器架构的应用程序。
更多详情
该脚本基于构建设置 VALID_ARCHS
。因为那是在更改框架的已签名可执行文件,所以它还需要处理代码签名。自从引入 bitcode 以来,它也得到了进一步的 post 处理作为责任。它从框架包中提取包含的 *.bcsymbolmap
文件,并将它们放入 *.xcarchive
.
FAQ topic on Bitcode of PSPDFKit 对 BCSymbolMap 是什么有很好的解释:
A BCSymbolMap is a lot like a dSYM for bitcode. Xcode builds it as part of creating the app binary, and also for every dynamic framework. It's required for re-symbolicating function/method names to understand crashers.
在我的例子中,更改 Build Phases 中的流程顺序以解决
- 不行
- 好的