在一个风格/目标中使用多个 google-services.json 和 GoogleService-Info.plist 文件

Posted

技术标签:

【中文标题】在一个风格/目标中使用多个 google-services.json 和 GoogleService-Info.plist 文件【英文标题】:Use multiple google-services.json and GoogleService-Info.plist files in one flavor/target 【发布时间】:2017-10-19 05:38:42 【问题描述】:

是否可以在 android 项目中使用两个 google-services.json 文件?我知道可以将多个 google-services.json 文件用于多种风格,但是否可以以某种方式合并具有不同 project_info 的两个文件并将它们同时用于一个项目?

下面是我想在一个项目和一种风格中使用的两个文件的示例(一个用于分析,另一个用于广告)。

第一个google-services.json


  "project_info": 
    "project_number": "XXXXXXXXXXXX",
    "project_id": "project-one"
  ,
  "client": [
    (...)
  ],
  "configuration_version": "1"

第二个google-services.json


  "project_info": 
    "project_number": "YYYYYYYYYYYY",
    "firebase_url": "https://project-two.firebaseio.com",
    "project_id": "project-two",
    "storage_bucket": "project-two.appspot.com"
  ,
  "client": [
    (...)
  ],
  "configuration_version": "1"

对于 ios 项目的 GoogleService-Info.plist 文件,我也有同样的问题。

【问题讨论】:

你读过这个post吗? 为什么同一个项目的项目编号和项目id有不同的值? @AlexMamo 是的。但正如我所写,我想以一种风格使用多个 google-services.json 文件。 @AlexTa 因为不同的各方都在为应用管理 Analytics 和 Firebase 广告。 【参考方案1】:

是的,可以使用多个FirebaseApp。但是您必须通过代码使用FirebaseApp 配置来进行第二个配置。 google-services.json & GoogleService-Info.plist 用于创建默认的 FirebaseApp。对于第二个配置,使用class func configure(name: String, options: FIROptions)(Swift) & public static FirebaseApp initializeApp (Context context, FirebaseOptions options, String name)(Android)。

iOS 演示代码:-

   let options =  FirebaseOptions(googleAppID: "1:XXXXXXXXXXXXXX:ios:XXXXXXXXXXXXXXXXXX", gcmSenderID: "XXXXXXXXXXXXX")
   options.apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXX"
   options.projectID = "App-XXXXX"
   FirebaseApp.configure(name: "AppAnalytics", options: options)

google-services.jsonGoogleService-Info.plist 文件中添加FirebaseOptions 数据/值。

更多详情请参考以下链接:

iOS: https://firebase.google.com/docs/reference/swift/firebasecore/api/reference/Classes/FirebaseApp https://firebase.google.com/docs/reference/swift/firebasecore/api/reference/Classes/FirebaseOptions

安卓: https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp#initializeApp(android.content.Context,%20com.google.firebase.FirebaseOptions,%20java.lang.String)

【讨论】:

Flutter 包呢?这就是我正在寻找的,实际上。你有什么想法吗? @GustavoLopes 是的,请查看此文档:pub.dev/documentation/firebase_core/latest/firebase_core/…(使用 FirebaseOptions 和名称)pub.dev/documentation/firebase_core_platform_interface/latest/… 太完美了!!最后,问题出在颤振库上。但是您的解决方案让我意识到这一点,我可以根据我的需要分叉和更新库。谢谢你。你真的很有帮助!

以上是关于在一个风格/目标中使用多个 google-services.json 和 GoogleService-Info.plist 文件的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - 多个目标多个启动图像的噩梦

在 iOS 中配置多个方案会导致风格不匹配

Scala 风格:一个文件中有多个类?

Keras实现风格迁移

在RESTFUL风格中怎样定义需要多个参数才能确定的资源路径

iOS 6 Storyboard Segue 风格 Popover 与 UIPopoverController 目标崩溃