将Firebase Storage添加到build.gradle中后,为什么会出现“清单合并失败”的情况?

时间:2019-07-29 07:36:02

标签: android firebase android-manifest

我一直在Android项目中使用Firebase。具体来说:Firebase FirestoreFirebase AuthenticationFirebase Cloud Messaging

今天,由于需要存储功能,我决定将Firebase Storage添加到build.gradle中。现在在构建项目时出现错误:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
    is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:8:5-214:19 to override.

这是我的build.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.myproject.myproject"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-auth:16.2.1'
    implementation 'com.google.firebase:firebase-firestore:18.2.0'
    implementation 'com.google.firebase:firebase-messaging:17.6.0'
//    implementation 'com.google.firebase:firebase-storage:18.1.1' // this seems to be causing the error
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
    implementation 'de.siegmar:fastcsv:1.0.3'
    implementation 'com.github.bumptech.glide:glide:4.9.0'

}

apply plugin: 'com.google.gms.google-services'

由于错误提示,我尝试在清单中的tools:replace="android:appComponentFactory"标记中添加<application>,但添加并不能解决该错误。

我还想指出,我的gradle中只有implementation 'com.google.firebase:firebase-storage:18.1.1'依赖项是最新版本(在撰写本文时)。

以下Firebase依赖项不是最新版本:

    implementation 'com.google.firebase:firebase-core:16.0.8'
    implementation 'com.google.firebase:firebase-auth:16.2.1'
    implementation 'com.google.firebase:firebase-firestore:18.2.0'
    implementation 'com.google.firebase:firebase-messaging:17.6.0'

我已经尝试将上面的依赖项更新到最新版本并进行构建,但是我仍然遇到相同的Manifest merger failed错误。

有人知道如何解决此错误吗?

2 个答案:

答案 0 :(得分:1)

您需要迁移到AndroidX。您使用的firebase-storage的版本要求docs上的AndroidX才能正常工作:

  

此版本是主要版本更新,其中包含重大更改。   在此版本中,库从Android支持库迁移到Jetpack(AndroidX)库。   除非您在应用中进行以下更改,否则更新的库将无法工作:

     
      
  1. com.android.tools.build:gradle升级到v3.2.1或更高版本。
  2.   
  3. 将compileSdkVersion升级到28或更高版本。
  4.   
  5. 更新您的应用程序以使用Jetpack(AndroidX);请遵循Migrating to AndroidX.
  6. 中的说明   

还请检查以下链接以了解如何迁移:

https://developer.android.com/jetpack/androidx/migrate

答案 1 :(得分:1)

它们是解决此问题的两种方法。

第一: 1)在AndroidX中迁移项目。

两个: 1)降级火力基地的依赖。

从这里:-

实现'com.google.firebase:firebase-core:11.8.0'

实现'com.google.firebase:firebase-messaging:11.8.0'