我正在将我的iOS应用程序的Firebase依赖项从CocoaPods迁移到Swift Package Manager。
Firebase的Crashlytics需要在构建应用程序时执行脚本(使用“Run Script”构建阶段)。在CocoaPods时代,我通常按照谷歌文档中所述的方式调用该脚本:"${PODS_ROOT}/FirebaseCrashlytics/run"
。
在我切换到SPM之后,Firebase文件不再位于${PODS_ROOT}
中,并且根本没有这样的变量可用。我知道我需要的文件现在位于DerivedData
文件夹中,具体来说是在~/Library/Developer/Xcode/DerivedData/MyApp-abcde/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run
处。问题是,MyApp-abcde
文件夹不容易引用。
我找到一篇Medium文章建议使用${BUILD_DIR}
构建变量(针对上面的示例,它将解析为<…>/MyApp-abcde/Build/Products
),并调用dirname
命令向上移动目录层次结构。
这种方法仅适用于运行应用程序。当我尝试将其存档时,${BUILD_DIR}
解析为另一个路径,即<…>/MyApp-abcde/Build/Intermediates.noindex/ArchiveIntermediates/MyApp/BuildProductsPath
。我尝试了一些构建变量,例如用${SYMROOT}
替换${BUILD_DIR}
,但它们根据操作也会产生不同的路径。
那么问题来了...
是否有一种可靠的方法使用Xcode的构建变量来引用我的应用程序的派生数据文件夹的根目录(即~/Library/Developer/Xcode/DerivedData/MyApp-abcde
)?
${XCS_DERIVED_DATA_DIR%/*}/Dependencies/checkouts
。 - RobLabs