每个包添加 Firebase 应用程序?
Add Firebase App per package?
我正在尝试将 Firebase Analytics 和崩溃报告添加到我的应用程序中。我在 Firebase 控制台中添加了该应用程序。我对 gradle 进行了更新,并将 firebase 核心和崩溃报告库添加为依赖项。
我的应用程序被分成多个子项目。每个包名称略有不同:
app/org.mythtv.android.app
tv/org.mythtv.android.tv
presentation/org.mythtv.android.presentation
domain/org.mythtv.android.domain
data/org.mythtv.android.data
app和tv是app和androidtv版本分离的两个高层子项目,presentation是前面2个接口层的通用组件,domain封装了处理数据时的通用逻辑交互,数据是与后端发生交互的地方。
它们都共享一个公共包:org.mythtv.android
应用程序 ID 为 org.mythtv.android.
我在 Firebase 控制台中基于 org.mythtv.android 创建了一个应用程序,并将 google-services.json 添加到应用程序和电视的根目录中。然后我也想跟踪其他层中的崩溃报告。 Gradle 此时无法构建,因为它找不到包 org.mythtv.android.presentation 和 org.mythtv.android.data。这些都是 Android 库子项目。数据只是一个 java 子项目。
Firebase 控制台是否需要每个包都有一个单独的应用程序,并且每个应用程序都需要自己单独的 google-services.json?这样岂不是事与愿违?
基于应用程序包名称的 Firebase Analytics 报告。软件包名称与您用于 Java 类 的软件包无关。两者是独立的。 Android 使用应用程序包名称来标识您的应用程序(例如用于更新),并且一旦您发布应用程序就无法更改。如果您使用 gradle,您可以在 app/build.gradle
作为 applicationId 值或在 AndroidManifest.xml package
属性中找到它。
听起来您已经找到了问题的根源,那就是您只需要复制 google-service.json 并将 google 服务插件应用到应用程序项目,而不是库项目。该插件想要进行一些仅与应用程序相关的更改。
为了帮助其他人解决同样的问题,错误消息如下所示:
* What went wrong:
Execution failed for task ':mylibrary:processReleaseGoogleServices'.
> No matching client found for package name 'com.google.mylibrary'
其中 "mylibrary" 是您自己的库项目的名称。
老实说,我认为插件应该检测它是否被应用到一个库项目并失败而不是用更好的消息,所以我会看看我们是否可以解决这个问题。
顺便说一句,您可能需要考虑将您的两个应用程序项目合并为一个具有两种不同风格的应用程序项目,一个用于应用程序,另一个用于电视。然后,他们可以默认共享所有内容,但有针对不同 API 级别的单独配置,甚至有不同的资源集、资产、清单项目,甚至独立代码,如果你小心的话。这应该会简化您的项目结构。您可以在此处阅读构建变体:
http://tools.android.com/tech-docs/new-build-system/user-guide
我正在尝试将 Firebase Analytics 和崩溃报告添加到我的应用程序中。我在 Firebase 控制台中添加了该应用程序。我对 gradle 进行了更新,并将 firebase 核心和崩溃报告库添加为依赖项。
我的应用程序被分成多个子项目。每个包名称略有不同:
app/org.mythtv.android.app
tv/org.mythtv.android.tv
presentation/org.mythtv.android.presentation
domain/org.mythtv.android.domain
data/org.mythtv.android.data
app和tv是app和androidtv版本分离的两个高层子项目,presentation是前面2个接口层的通用组件,domain封装了处理数据时的通用逻辑交互,数据是与后端发生交互的地方。
它们都共享一个公共包:org.mythtv.android 应用程序 ID 为 org.mythtv.android.
我在 Firebase 控制台中基于 org.mythtv.android 创建了一个应用程序,并将 google-services.json 添加到应用程序和电视的根目录中。然后我也想跟踪其他层中的崩溃报告。 Gradle 此时无法构建,因为它找不到包 org.mythtv.android.presentation 和 org.mythtv.android.data。这些都是 Android 库子项目。数据只是一个 java 子项目。
Firebase 控制台是否需要每个包都有一个单独的应用程序,并且每个应用程序都需要自己单独的 google-services.json?这样岂不是事与愿违?
基于应用程序包名称的 Firebase Analytics 报告。软件包名称与您用于 Java 类 的软件包无关。两者是独立的。 Android 使用应用程序包名称来标识您的应用程序(例如用于更新),并且一旦您发布应用程序就无法更改。如果您使用 gradle,您可以在 app/build.gradle
作为 applicationId 值或在 AndroidManifest.xml package
属性中找到它。
听起来您已经找到了问题的根源,那就是您只需要复制 google-service.json 并将 google 服务插件应用到应用程序项目,而不是库项目。该插件想要进行一些仅与应用程序相关的更改。
为了帮助其他人解决同样的问题,错误消息如下所示:
* What went wrong:
Execution failed for task ':mylibrary:processReleaseGoogleServices'.
> No matching client found for package name 'com.google.mylibrary'
其中 "mylibrary" 是您自己的库项目的名称。
老实说,我认为插件应该检测它是否被应用到一个库项目并失败而不是用更好的消息,所以我会看看我们是否可以解决这个问题。
顺便说一句,您可能需要考虑将您的两个应用程序项目合并为一个具有两种不同风格的应用程序项目,一个用于应用程序,另一个用于电视。然后,他们可以默认共享所有内容,但有针对不同 API 级别的单独配置,甚至有不同的资源集、资产、清单项目,甚至独立代码,如果你小心的话。这应该会简化您的项目结构。您可以在此处阅读构建变体:
http://tools.android.com/tech-docs/new-build-system/user-guide