当使用FirebaseApp.configure(options:)时,无法找到GoogleService-Info.plist配置文件。

5
在我的项目中,我为同一个应用程序设置了不同的目标,并使用不同的配置(生产/暂存/质量保证)。如 Firebase文档所建议的那样,我为每个目标添加了一个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)

我还从我的项目中移除了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步进行操作:https://firebase.google.com/docs/ios/setup#prerequisites - Michele Pisani
你的意思是“将Firebase SDK添加到您的应用程序”吗?我已经将 'Firebase/Core' 添加到项目中了。此外,当使用单个 GoogleService-Info.plist 时,一切都正常(我的应用程序已经在生产中,并且分析正在工作)。 - francybiga
你检查了每个配置吗?它们是否都表现得完全一样?根据错误消息,看起来FirebaseOptions没有正确设置(特别是因为您不再使用默认文件名)。 - Mark Thormann
我从Firebase控制台下载了配置文件。在调试器中,如果我在将“options”传递给“FirebaseApp.configure”之前检查“options.googleAppID”的值,则可以获得正确的值。 - francybiga
2
我曾经遇到过类似的问题,所以我保留了原始文件名,并将文件移动到了相应的文件夹,并根据目标设置了目标成员身份。你尝试过这种方法吗? - Micgal
5个回答

5

当你使用Flutter时:

我运行了Flutter命令行界面,使用flutterfire configure命令将Firebase添加到我的项目中。这会将GoogleService_Info.plist添加到我的项目中,但没有在.xcworkspace文件中注册该文件。

因此,我不得不在Xcode中右键单击Runner文件夹,选择Add Files to "Runner"...,然后选择文件GoogleService_Info.plist


4

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

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


2

解决为GoogleService-Info.plist准备单独文件夹的另一种方法是在Build Phases中添加一个额外的步骤来复制适当的文件。只需转到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上还有一个专门的问题票据:Firebase github

构建阶段


0

也许您需要将所需的文件(GoogleService-Info.plist)添加到项目资源中。在Xcode中打开yourproject.xcworkspace,在项目导航器中右键单击资源文件夹,然后选择“添加文件到...”。


0
在左侧窗格中选择GoogleService-Info.plist,然后取消/选中您的项目的目标成员资格复选框。

Right panel target membership


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接