gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:14:10 25 4
gpt4 key购买 nike

我正在尝试将免安装应用程序实现到使用 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'

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

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

Attribute provider#com.google.firebase.provider.FirebaseInitProvider@authorities value=(com.iamkaan.packagename.firebaseinitprovider) from AndroidManifest.xml:10:13-72 is also present at AndroidManifest.xml:33:350-423 value=(com.iamkaan.packagename.base.firebaseinitprovider). Suggestion: add 'tools:replace="android:authorities"' to element at AndroidManifest.xml:8:9-12:39 to override. app main manifest (this file), line 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 调用之前添加了对不同地方的调用,但没有任何帮助。

包名

  • 应用 list :com.iamkaan.packagename
  • app gradle applicationId: com.iamkaan.packagename
  • 应用程序基础 list :com.iamkaan.packagename.base
  • 基于应用程序的 gradle 文件没有 applicationId

最佳答案

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

你需要做的是:

  1. 在主应用程序中添加基本模块时不要排除任何东西,即继续使用 implementation project(':app-base') only
  2. 使用 api 而不是 implementation 支持包含在 Base Module 的 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 而是仅使用您需要的支持库中的特定项目。参见 Support Library Packages关于如何仅添加支持库中的特定项目。

关于android - 免安装应用的 Firebase 支持库依赖冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48292901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com