无法从构建环境获取Google Services文件中的GOOGLE_APP_ID

时间:2019-07-12 12:05:35

标签: ios swift firebase crashlytics

对于设置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”时,在构建阶段出现错误消息。

任何人都可以提出更好的解决方案来满足我的要求。

21 个答案:

答案 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.plistGoogleService-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}}中添加用户定义的文件名:

Add file name for each scheme in User Defined

  • User Defined的Crashlytic构建阶段上方,点击加号Build Phases,然后在文本字段中键入此代码。请记住,将%YOUR_CUSTOM_PATH_TO_FOLDER%重命名为Plist文件的路径:
New Run Script Phase

Add build 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的运行脚本时,错误消失了。请查看以下屏幕截图: enter image description here

关于它的文章是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文件

Sample Image

另一种实现方法,或查找实现方法,称为带有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)

只需从您的项目设置下载并放置您正在运行的正确目标。

plist file

答案 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 并且不要使用它。由于该库的文档是胡说八道,我不再支持公司使用它,我会寻找替代方案。