使用 FirebaseApp.configure(options:) 时找不到配置文件 GoogleService-Info.plist

Posted

技术标签:

【中文标题】使用 FirebaseApp.configure(options:) 时找不到配置文件 GoogleService-Info.plist【英文标题】:Could not locate configuration file GoogleService-Info.plist when using FirebaseApp.configure(options:) 【发布时间】:2019-09-25 12:45:20 【问题描述】:

在我的项目中,我对具有不同配置(生产/暂存/质量检查)的同一个应用程序有不同的目标。正如Firebase docs 所建议的那样,我为每个目标添加了一个plist 文件,并通过以这种方式传递正确的配置文件来初始化 FirebaseApp:

let configPath = Bundle.main.path(forResource: NAME_OF_PLIST_FOR_CURRENT_TARGET ofType: ".plist")!
let options = FirebaseOptions(contentsOfFile: configPath)!
FirebaseApp.configure(options: options)

我还按照文档here 中的建议从我的项目中删除了GoogleService-Info.plist 文件,以确保可靠的分析报告。

当我在控制台中运行应用程序时,我会看到这些消息。

[Firebase/Core][I-COR000012] Could not locate configuration file: 'GoogleService-Info.plist'.
[Firebase/Analytics][I-ACS020006] Google App ID from GoogleService-Info.plist is empty. Please, define GOOGLE_APP_ID in GoogleService-Info.plist for Analytics to work reliably. See
[Firebase/Analytics][I-ACS025020] Analytics requires Google App ID from GoogleService-Info.plist. Your data may be lost. Google App ID has been changed. Original, new ID: (nil), MYAPPID 

我做错了吗?这种配置会导致丢失分析吗? (如控制台消息所示)

【问题讨论】:

尝试按照“将 Firebase 添加到您的应用”下的第 4 步操作:firebase.google.com/docs/ios/setup#prerequisites 您的意思是“将 Firebase SDK 添加到您的应用”吗?我已经在项目中添加了'Firebase/Core'。此外,当使用单个 GoogleService-Info.plist 时,一切正常(我的应用程序已经投入生产并且 Analytics 正在运行)。 你检查过每个配置吗?它们的行为是否完全相同?根据该错误消息,FirebaseOptions 似乎没有正确设置(特别是因为您不再使用默认文件名)。 我从 Firebase 控制台下载了配置文件。同样在调试器中,如果我在将options 传递给FirebaseApp.configure 之前检查options.googleAppID 的值,我会得到正确的值。 我遇到了类似的问题,所以我保留了原始文件名,我将文件移动到文件夹并根据目标设置目标成员资格。你试过了吗? 【参考方案1】:

经过多次尝试,尽管控制台中出现错误消息,但似乎 Firebase 配置正确。

尽管如此,我还是决定采用@Micgal 提出的解决方案,从而在不同的文件系统目录中拥有多个名为GoogleService-Info.plist 的文件,并将每个文件添加到相应的目标中。然后我可以使用 FirebaseApp.configure() 初始化 Firebase,它可以按预期工作而不会生成错误消息。

【讨论】:

【参考方案2】:

去颤振

在您的项目中添加 Firebase 配置文件

    从Firebase iOS config file 下载 GoogleService-Info.plist 文件。

    使用 Xcode 将文件添加到项目中。使用 Xcode 打开项目的 ios/projectName.xcworkspace 文件。在 Xcode 中的左侧项目导航中右键单击 Runner,然后选择 Add files,如下所示:

    选择您下载的 GoogleService-Info.plist 文件,并确保启用“Copy items if needed”复选框:

【讨论】:

【参考方案3】:

GoogleService-Info.plist 设置单独的文件夹的替代解决方法是在构建阶段添加额外的步骤,以复制适当的文件。只需转到 Targets / Build Phases 并通过单击“New Run Script Phase”添加新脚本。脚本可能是这样的:

cp "$SRCROOT/$PROJECT/$FIREBASE_CONFIG_FILE.plist" "$TARGET_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH/GoogleService-Info.plist"

其中FIREBASE_CONFIG_FILE 在构建设置中定义为用户定义的设置,对于各种配置具有不同的值。然后只需拨打FirebaseApp.configure()

Firebase github也有专用票

【讨论】:

【参考方案4】:

也许您必须将此所需的文件 (GoogleService-Info.plist) 添加到您的项目资源中。在 Xcode 中打开 yourproject.xcworkspace,然后在 Project navigator 中单击 Ressources 文件夹并选择“Add files to...”。

【讨论】:

以上是关于使用 FirebaseApp.configure(options:) 时找不到配置文件 GoogleService-Info.plist的主要内容,如果未能解决你的问题,请参考以下文章

Firebase:FIRApp.configure() 一直希望我将其更改为 FirebaseApp.configure()

默认 Firebase 应用尚未配置,但 FirebaseApp.configure() 添加到 appdelegate 的 didFinishLaunchingWithOptions 方法

将 Firebase Analytics 与命名的 FirebaseApp 一起使用

必须先配置默认 FirebaseApp 实例,然后才能初始化 defaultFirebaseApp 实例

快速打印数据库[重复]

多目标应用程序中的 Firebase 初始化