Firebase 支持免安装应用的库依赖冲突



我正在尝试将免安装应用实施到使用 Firebase 数据库的项目中。我的目标是 SDK 版本 27,因此支持库位于版本27.0.2上。

Firebase 数据库版本为11.8.0,gms版本为3.1.0。当我尝试同步时,出现以下错误:

Android dependency 'com.android.support:support-v4' has different 
version for the compile (25.2.0) and runtime (27.0.2) classpath. You 
should manually set the same version via DependencyResolution

我能够通过在即时应用程序之前明确添加以下依赖项来解决此问题

implementation 'com.android.support:support-v4:27.0.2'
implementation 'com.android.support:support-media-compat:27.0.2'

但是对于即时应用程序,即使我在功能模块(应用程序基础)中有它们,当我尝试构建实际应用程序(com.android.application)时,我再次收到相同的错误。

我可以再次通过将这些冲突的依赖项移动到应用程序模块 gradle 文件中来解决这个问题,在这种情况下,同步成功,但随后我遇到了另一个问题,这次是清单合并,这会阻止应用程序找到启动器活动:

来自 AndroidManifest.xml:10:13-72 的属性提供程序 #com.google.firebase.provider.FirebaseInitProvider@authorities value=(com.iamkaan.packagename.firebaseinitprovider) 也存在于 AndroidManifest.xml:33:350-423 value=(com.iamkaan.packagename.base.firebaseinitprovider)。建议:将"tools:replace="android:authority"添加到AndroidManifest.xml:8:9-12:39的元素中以覆盖。应用主清单(此文件),第 9 行

最后一个问题在某种程度上与firebase-core依赖项有关,因为当我将我的应用程序 gradle 依赖项从

implementation project(':app-base')

implementation (project(':app-base')) {
exclude group: 'com.google.firebase', module:'firebase-core'
}

我能够运行该应用程序。但是这一次,我开始在运行时收到以下错误(我第一次打电话给FirebaseDatabase.getInstance())

Default FirebaseApp is not initialized in this process com.iamkaan.packagename. Make sure to call FirebaseApp.initializeApp(Context) first

它确实没有被调用,但在即时应用程序实现之前一直在工作。无论如何,我在第一次Firebase数据库调用之前将调用添加到各个地方,没有任何帮助。

包名称

  • 应用清单:com.iamkaan.packagename
  • 应用分级应用程序 ID:com.iamkaan.packagename
  • 基于应用程序的清单:com.iamkaan.packagename.base
  • 基于应用的 gradle 文件没有应用标识

我遇到了类似的事情,这是由依赖项包含的支持库引起的。需要注意的是,几乎所有的Google/Android支持库(CardView,RecyclerView等)都包含最新的v4和v7支持库。所以这通常会导致冲突。

您需要做的是:

  1. 在主应用程序中添加基本模块时不要排除任何内容,即仅继续使用implementation project(':app-base')
  2. 使用api而不是implementation基础模块build.gradle中包含的支持库,即api 'com.android.support:support-v4:27.0.2'
  3. 确保您在基本模块中添加的任何库都不得再次添加到主应用程序的build.gradle文件中
  4. 最重要的是:对于主应用程序和基本模块的build.gradle文件,请为每个项目排除支持库(请参阅下面的示例)

 

api('com.android.support:support-media-compat:27.0.2') {
exclude group: 'com.android.support'
}
api('com.android.support:support-v7:27.0.2') {
exclude group: 'com.android.support'
}

我还建议不要使用com.android.support:support-v7:27.0.2而是仅使用您需要的支持库中的特定项目。请参阅支持库包,了解如何仅添加支持库中的特定项目。

试试这个。 SDK 是 28

implementation ('com.google.firebase:firebase-core:16.0.6'){
exclude module: 'support-media-compat'
exclude module: 'support-v4'
}
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'

最新更新