繁体   English   中英

Firebase支持即时应用程序的库依赖冲突

[英]Firebase support library dependency conflict for instant apps

我正在尝试将即时应用程序实现到使用Firebase数据库的项目中。 我的目标是SDK版本27 ,因此支持库的版本为27.0.2

Firebase数据库版本为11.8.0gms版本为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'

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

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

来自AndroidManifest.xml的属性提供者#com.google.firebase.provider.FirebaseInitProvider@authorities value =(com.iamkaan.packagename.firebaseinitprovider):AndroidManifest.xml中还有10:13-72:33:350-423 value = (com.iamkaan.packagename.base.firebaseinitprovider)。 建议:在AndroidManifest.xml:8:9-12:39中添加'tools:replace =“android:authorities”'来覆盖。 app主要清单(此文件),第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

它确实没有被调用,但是直到应用程序即时实施才开始工作。 无论如何,我在第一次FirebaseDatabase调用之前将调用添加到了各个地方,没有任何帮助。

包名称

  • app manifest: com.iamkaan.packagename
  • app gradle applicationId: com.iamkaan.packagename
  • app-base manifest: com.iamkaan.packagename.base
  • app-base gradle文件没有applicationId

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

你需要做的是:

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

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM