【发布时间】:2021-02-12 07:44:05
【问题描述】:
我正在将我的 iOS 应用的 Firebase 依赖项从 CocoaPods 转移到 Swift 包管理器。
Firebase 的 Crashlytics 需要在构建应用时执行脚本(使用运行脚本构建阶段)。回到 CocoaPods 时代,我曾经以 documented by Google: "${PODS_ROOT}/FirebaseCrashlytics/run" 的方式调用脚本。
在我切换到 SPM 后,Firebase 文件不再位于 ${PODS_ROOT} 中,并且根本没有这样的变量可用。我知道我需要的文件现在位于DerivedData 文件夹中,特别是在~/Library/Developer/Xcode/DerivedData/MyApp-abcde/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run。问题是,MyApp-abcde 文件夹不容易被引用。
A Medium post I found 建议使用${BUILD_DIR} 构建变量(对于上面的示例,它将解析为<…>/MyApp-abcde/Build/Products),并调用dirname 命令向上移动目录层次结构。
此 hack 仅适用于运行应用程序。当我尝试归档它时,${BUILD_DIR} 解析到另一条路径,即<…>/MyApp-abcde/Build/Intermediates.noindex/ArchiveIntermediates/MyApp/BuildProductsPath。我尝试了更多构建变量,例如${SYMROOT},代替${BUILD_DIR},但它们也会根据操作产生不同的路径。
那么,问题来了……
有没有办法可靠地引用我应用的派生数据文件夹的根目录(即~/Library/Developer/Xcode/DerivedData/MyApp-abcde)使用 Xcode 的构建变量?
【问题讨论】:
标签: ios xcode firebase swift-package-manager xcode-build-settings