Muk*_*ami 4 ios firebase crashlytics swift
为了设置firebase,我使用两个配置:1.GoogleService-Info-test.plist,2.GoogleService-Info-prdn.plist(用于UAT和Production)。为了使用firebase安装crashlytics,我遵循了firebase文档https://firebase.google.com/docs/crashlytics/get-started?authuser=1#ios。但是,当我尝试运行时,在运行脚本时会在构建阶段引发错误。
我尝试不更改配置文件名就可以了。
运行Fabric运行脚本“无法从构建环境获取Google Services文件中的GOOGLE_APP_ID”时,在构建阶段出现错误消息。
任何人都可以提出更好的解决方案来满足我的要求。
小智 35
这是您可以做到的一种方法,通过将您的项目环境按目标分开,通过这样做,您可以添加不同的 plist 文件并只检查它们所属的目标,这样当您编译目标时,它将采用它对应的plist文件
另一种方法,或者查找如何去做,它被称为具有 firebase 的多环境,这里有一些有用的链接
对不同的构建方案使用不同的 GoogleService-Info.plist
https://medium.com/rocket-fuel/using-multiple-firebase-environments-in-ios-12b204cfa6c0
sam*_*ize 29
如果您使用 Xcode 15(截至 2023 年的测试版),您可能已使用ENABLE_USER_SCRIPT_SANDBOXING
.
默认值为 YES,这将导致存档期间出现 Crashlytics 问题。
转到“构建设置”>“用户脚本沙盒”>“设置为否”。
Cmo*_*ien 28
我在“构建阶段”中有这个并且它有效
"${PODS_ROOT}/FirebaseCrashlytics/run"
"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${PROJECT_DIR}/MyApp/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
Run Code Online (Sandbox Code Playgroud)
小智 13
我们的项目只有一个目标,但我们需要使用两个 Firebase 配置文件GoogleService-Info-Prod.plist
和GoogleService-Info-Dev.plist
.
我在“构建阶段”中有这个并且它有效。
if [ "${CONFIGURATION}" = "Release" ]; then
${PODS_ROOT}/FirebaseCrashlytics/run -gsp ${PROJECT_DIR}/RushCard/FirebaseConfig/GoogleService-Info-Prod.plist
else
${PODS_ROOT}/FirebaseCrashlytics/run -gsp ${PROJECT_DIR}/RushCard/FirebaseConfig/GoogleService-Info-Dev.plist
fi
Run Code Online (Sandbox Code Playgroud)
小智 7
另一种方法是确保一个 plist 保留原始名称 GoogleService-Info.plist
不同的目标意味着需要做更多的工作来更新 CI。
这至少对 Xcode 11 有效,未在任何其他版本上测试
In my case I created New Run Script Phrase above Compile Sources, that's why I always see
Could not get GOOGLE_APP_ID in Google Services file from build environment
When I moved Crashlytic's run script at the end of list bug was disappear. Please look the following screen shot:
And article about it is here
当我尝试手动上传 dSYMS 时,我正在使用新的 Firebase/Crashlytics 测试版并收到错误“未提供 Google App ID 或 Google 服务文件”
这是命令:
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols
-gsp/path/to/GoogleService-Info.plist -p ios /path/to/dSYMs
Run Code Online (Sandbox Code Playgroud)
然后我认为“-gsp”和Google.plist的路径之间应该有空格,然后它起作用了。
对我来说,解决方案是删除对 upload-symbols 脚本的调用。
Crashlytics 指南之一提到您应该添加以下内容:
${PODS_ROOT}/FirebaseCrashlytics/run
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols <- Not needed
Run Code Online (Sandbox Code Playgroud)
我误解了这一点...运行脚本已经调用了上传符号,因此无需添加第二次调用。
这为我工作:
使用Firebase安装Crashlytic时,对于多种方案,您可能会遇到error Could not get GOOGLE_APP_ID in Google Services file from build environment
。您可以通过以下方法修复它:
Build Settings
,在中添加用户定义的文件名User Defined
:Build Phases
,点击New Run Script Phase
您的Crashlytic构建阶段上方的加号按钮,然后将此代码键入文本字段。请记住将%YOUR_CUSTOM_PATH_TO_FOLDER%重命名为Plist文件的路径:GOOGLE_SERVICE_INFO_PLIST_FROM="${PROJECT_DIR}/%YOUR_CUSTOM_PATH_TO_FOLDER%/${GOOGLE_SERVICE_INFO_PLIST_NAME}"
BUILD_APP_DIR="${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}"
GOOGLE_SERVICE_INFO_PLIST_TO="${BUILD_APP_DIR}/GoogleService-Info.plist"
cp "${GOOGLE_SERVICE_INFO_PLIST_FROM}" "${GOOGLE_SERVICE_INFO_PLIST_TO}"
Run Code Online (Sandbox Code Playgroud)
确保在 Xcode 文件资源管理器(即左侧)中显示“GoogleService-Info.plist” 。如果没有,您必须将“GoogleService-Info.plist”拖放到 Xcode 面板中。
就我而言,问题是我将文件复制粘贴到项目位置,因为项目信息中缺少此文件引用。
我为几个白标应用程序使用了多种配置。我添加了一个用户定义的变量FIREBASE_SUFFIX
并将我的脚本更改为以下内容:
${PODS_ROOT}/FirebaseCrashlytics/run -gsp ${PROJECT_DIR}/Firebase/GoogleService-Info-${FIREBASE_SUFFIX}.plist
Run Code Online (Sandbox Code Playgroud)
注意:我在这里使用 Carthage 作为 firebase:https : //github.com/firebase/firebase-ios-sdk/blob/master/Carthage.md。如果你是同样的设置,你应该使用类似的东西(替换你放置脚本文件的路径):
${PROJECT_DIR}/scripts/run -gsp ${PROJECT_DIR}/Firebase/GoogleService-Info-${FIREBASE_SUFFIX}.plist
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2765 次 |
最近记录: |