我可以在 Android 库模块中使用 Firebase 远程配置并仍然允许库使用者使用它吗?

Can I use Firebase Remote config in an Android library module and still alow the library consumer to use it?

是否可以在 Android 库模块中使用 Firebase 远程配置并仍然允许库使用者使用他们自己的帐户使用 Firebase 远程配置?

我创建了一个 Android 库,它使用 Firebase 远程配置从我的 Firebase 控制台帐户更新库配置。

在引用库的 reference/test 应用程序中,我的 google-services.json 在应用程序目录中。一切正常。

我刚刚意识到,一旦我将我的库作为 aar 提供给其他人,他们可能会拥有自己的 google-services.json 并直接在他们自己的应用程序中使用 Firebase。

我已经搜索过 google,但我发现很难确定这是否可行?有没有人有过此设置的经验或知道它应该如何工作?我唯一能想到的尝试就是将我的 google-services.json 移到图书馆,但我无法让它工作。

在此先感谢您的帮助!

Firebase 团队从未打算在第三方模块中使用 Firebase SDK。 SDK 都非常依赖于由应用程序作为一个整体而不是模块配置的宿主项目。事实上,你不能在library模块中使用google-services插件,只能在app模块中使用。

远程配置更加复杂,因为它在很大程度上依赖于分析,绝对仅作为应用程序级依赖项可行(你不能有两个项目收集分析来自单个应用程序)。

如果你真的很努力,你也许可以在第三方模块中使用像实时数据库这样的东西,所有使用它的应用程序都可以访问同一个数据库,但是你必须初始化一个特殊的FirebaseApp 指向您的公共项目,并使您的数据库全球可读,因为您将没有适当的身份验证来控制对个人用户的访问。

显然现在(我使用的是 BOM 26.0.0,但我认为它自某些以前的版本以来就可用)您还可以手动设置您的 Firebase 实例,而不是从 google- services.json.

如果你深入研究他们的代码,你会发现

的重载方法
FirebaseApp getInstance()
FirebaseApp getInstance(@NonNull String name)

您可以使用此重载方法手动设置:

FirebaseApp initializeApp(@NonNull Context context, @NonNull FirebaseOptions options, @NonNull String name)

作为 FirebaseOptions 的构建器class,您可以在其中手动设置值。