我一直在寻找一种方法来在运行时添加 google-services.json,因为我们使用相同的基本代码为不同的客户端配置应用程序,因此我们希望在运行时添加 google-services.json。
我尝试了几个链接,但找不到这样的方法。
任何帮助将不胜感激。
最佳答案
google-services.json
实际上在运行时永远不会被读取。在 Android 应用的构建过程中,google-services.json
中的相关信息会转换为应用的 XML 资源,并且是应用启动时读取的位置。由于构建插件放置值的目的地是硬连线的,因此您无法将其配置为具有多组配置数据。
我建议您在代码中显式配置 FirebaseApp
实例,而不是尝试在运行时读取 google-services.json
,如下所示:
// Manually configure Firebase Options
FirebaseOptions options = new FirebaseOptions.Builder()
.setApplicationId("1:27992087142:android:ce3b6448250083d1") // Required for Analytics.
.setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw") // Required for Auth.
.setDatabaseUrl("https://myproject.firebaseio.com") // Required for RTDB.
.build();
现在,您可以自行决定将 google-services.json
中的相关信息保存在何处,以及在应用启动时使用哪些信息。
然后:
// Initialize with secondary app.
FirebaseApp.initializeApp(this /* Context */, options, "secondary");
// Retrieve secondary app.
FirebaseApp secondary = FirebaseApp.getInstance("secondary");
// Get the database for the other app.
FirebaseDatabase secondaryDatabase = FirebaseDatabase.getInstance(secondary);
另请参阅:
- 关于 using multiple build flavors 的文档部分(我现在从中复制了代码片段)
- 我的previous answer on a related topic (我认为文档中的代码片段源自于此😀)
关于firebase - 没有 google-services.json 文件的 Google 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48947543/