对于设置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”时,在构建阶段出现错误消息。
任何人都可以提出更好的解决方案来满足我的要求。
答案 0 :(得分:23)
我在“构建阶段”中有此功能,并且可以正常工作
"${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}"
答案 1 :(得分:10)
这对我有用:
确保在复制捆绑包资源之后添加Xcode Crashlytics构建阶段。
答案 2 :(得分:8)
我们的项目只有一个目标,但是我们需要使用两个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
答案 3 :(得分:5)
这对我有用:
在使用Firebase安装Crashlytic时,对于多种方案,您可能会遇到错误Could not get GOOGLE_APP_ID in Google Services file from build environment
。您可以通过以下方式修复它:
Build Settings
的{{1}}中添加用户定义的文件名:User Defined
的Crashlytic构建阶段上方,点击加号Build Phases
,然后在文本字段中键入此代码。请记住,将%YOUR_CUSTOM_PATH_TO_FOLDER%重命名为Plist文件的路径:New Run Script Phase
答案 4 :(得分:4)
我使用的是新的Firebase / Crashlytics(测试版),尝试手动上传dSYMS时出现错误“未提供Google App ID或Google服务文件”
这是命令:
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols
-gsp/path/to/GoogleService-Info.plist -p ios /path/to/dSYMs
然后我保证在“ -gsp”和Google.plist的路径之间应该有空格,然后它起作用了。
答案 5 :(得分:3)
对我来说,解决方案是删除对上载符号脚本的调用。
其中一部Crashlytics指南提到您应该添加以下内容:
${PODS_ROOT}/FirebaseCrashlytics/run
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols <- Not needed
我误解了这一点...运行脚本已经调用了上载符号,因此无需添加第二个调用。
答案 6 :(得分:2)
另一种方法是确保一个plist保留原始名称GoogleService-Info.plist
不同的目标意味着我需要做更多的工作来更新CI。
这至少对Xcode 11有效,未经任何其他版本测试
答案 7 :(得分:2)
我对多个标有白色的应用程序使用了多种配置。我添加了一个用户定义的变量FIREBASE_SUFFIX
,并将脚本更改为以下内容:
${PODS_ROOT}/FirebaseCrashlytics/run -gsp ${PROJECT_DIR}/Firebase/GoogleService-Info-${FIREBASE_SUFFIX}.plist
注意:我在https://github.com/firebase/firebase-ios-sdk/blob/master/Carthage.md中使用迦太基作为火力基地。如果您使用的是同一设置,则应该改用类似的方法(将路径替换为放置脚本文件的位置):
${PROJECT_DIR}/scripts/run -gsp ${PROJECT_DIR}/Firebase/GoogleService-Info-${FIREBASE_SUFFIX}.plist
答案 8 :(得分:2)
就我而言,我在编译源上方创建了新运行脚本短语,这就是为什么我总是看到
无法从构建环境获取Google Services文件中的GOOGLE_APP_ID
当我在列表末尾移动Crashlytic的运行脚本时,错误消失了。请查看以下屏幕截图:
关于它的文章是here
答案 9 :(得分:1)
确保至少在xcode文件资源管理器中显示“ GoogleService-Info.plist” 。
就我而言,问题是由于引用了“ GoogleService-Info.plist”。错误地,我只是在项目位置添加了文件,因此,xcode左侧文件浏览器中缺少该文件。
只需在xcode中拖放“ GoogleService-Info.plist”即可。
答案 10 :(得分:0)
我有相同的错误,也是由于我有多个捆绑包标识符,因此我有一个名为 Firebase脚本的构建阶段脚本(该脚本指向了正确的 GoogleService-Info .plist )在 Crashlytics脚本之后运行。 解决方案是在 Crashlytics脚本之前先运行 Firebase脚本 。
答案 11 :(得分:0)
以上所有答案都为解决该问题提供了可能的解决方案,在我的案例中,“复制捆绑资源”中缺少GoogleService.plist文件,因此添加了对我有用的文件。
要检查文件转到
项目目录>>构建阶段>>复制捆绑包资源
添加它,如果发现丢失,请添加到这里。
答案 12 :(得分:0)
尝试降级,它对我有用! 我用了: '面料','1.9.0' 'Crashlytics','3.12.0'
答案 13 :(得分:0)
在我的文件中,我有一个不同的名字,当我将其更改为常规名称 GoogleService-Info.plist 时,他的名字是 GoogleService-Enterprise-Info.plis strong>,这很不错!
答案 14 :(得分:0)
这是一种实现方法,通过将项目环境与目标分隔开,然后可以添加不同的plist文件并仅检查它们所属的目标,从而在编译目标时使用该方法将获取其对应的plist文件
另一种实现方法,或查找实现方法,称为带有firebase的多个环境,这里有一些有用的链接
Use different GoogleService-Info.plist for different build schemes
https://medium.com/rocket-fuel/using-multiple-firebase-environments-in-ios-12b204cfa6c0
答案 15 :(得分:0)
我在@ react-native-firebase / crashlytics中也遇到了同样的问题
如果您遇到此问题,则可能错过了以下链接中提到的“ ios设置”说明。请按照说明解决问题。 https://rnfirebase.io/#generating-ios-credentials
答案 16 :(得分:0)
答案 17 :(得分:0)
如果您的项目名称或项目路径中有空格,则会显示此错误。
在此GitHub Issue中阅读更多
答案 18 :(得分:0)
除了其他答案..
我遇到了完全相同的错误消息的问题,在我的情况下,文件 GoogleService-Info.plist 一切正常,只是它是使用错误的应用程序包 ID 生成的(它在 XCode 中更改的时间比最初的 Firebase 设置晚得多) ),所以我必须在 Firebase Console 中使用正确的 Bundle ID 创建新应用程序(无法编辑)并下载新的 GoogleService-Info.plist
答案 19 :(得分:0)
如果您使用 popular build scripts 中的一个来处理多个不同的环境,知道您应该根据目标平台使用不同的 GoogleService-Info.plist
目标可能很有用:
// iOS
PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app
// watchOS
PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.appex
// macOS
PLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Resources
答案 20 :(得分:-1)
唯一对我有用的解决方案是删除 Crashyltics 并且不要使用它。由于该库的文档是胡说八道,我不再支持公司使用它,我会寻找替代方案。