首页 > 解决方案 > Gradle 错误为动态链接添加 firebase 依赖项

问题描述

在我的build.gradle中,我尝试添加implementation 'com.google.firebase:firebase-dynamic-links:16.0.0',但后来我收到了这个错误:

ERROR: In project 'app' a resolved Google Play services library dependency depends on 
another at an exact version (e.g. "[15.0.4]", but isn't being resolved to that version.
Behavior exhibited by the library will be unknown.

Dependency failing: com.google.firebase:firebase-analytics-impl:16.0.0 -> 
com.google.android.gms:play-services-measurement-base@[15.0.4],
but play-services-measurement-base version was 16.5.0.

The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art
ifact with the issue.
-- Project 'app' depends onto com.google.android.gms:play-services-measurement@{strictly 16.5.0}
-- Project 'app' depends onto com.google.firebase:firebase-analytics@{strictly 16.5.0}
-- Project 'app' depends onto com.google.android.gms:play-services-measurement-base@{strictly 16.5.0}
-- Project 'app' depends onto com.google.firebase:firebase-dynamic-links@16.0.0
-- Project 'app' depends onto com.google.firebase:firebase-analytics-impl@{strictly 16.0.0}
-- Project 'app' depends onto com.google.android.gms:play-services-measurement-sdk-api@{strictly 16.5.0}
-- Project 'app' depends onto com.google.android.gms:play-services-measurement-api@{strictly 16.5.0}
-- Project 'app' depends onto com.google.android.gms:play-services-measurement-sdk@{strictly 16.5.0}
-- Project 'app' depends onto com.google.firebase:firebase-core@16.0.9
-- Project 'app' depends onto com.google.android.gms:play-services-measurement-impl@{strictly 16.5.0}
-- Project 'app' depends onto com.google.firebase:firebase-core@{strictly 16.0.9}
-- Project 'app' depends onto com.google.firebase:firebase-dynamic-links@{strictly 16.0.0}

For extended debugging info execute Gradle from the command line with ./gradlew --info :app:assembleDebug to see the dep
endency paths to the artifact. This error message came from the google-services Gradle plugin, report issues at https://
github.com/google/play-services-plugins and disable by adding "googleServices { disableVersionCheck = false }" to your b
uild.gradle file.

这是build.gradle添加动态链接之前的外观

dependencies {

    implementation 'com.android.support:support-v4:28.0.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.android.support:cardview-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'

    implementation 'com.google.firebase:firebase-core:16.0.9'
    implementation 'com.google.firebase:firebase-messaging:18.0.0'
    implementation 'com.google.firebase:firebase-auth:17.0.0'
    implementation 'com.google.firebase:firebase-storage:17.0.0'
    implementation 'com.google.firebase:firebase-firestore:19.0.1'
    implementation 'com.firebaseui:firebase-ui-firestore:4.2.1'

    implementation 'com.google.android.gms:play-services-base:16.1.0'
    implementation 'com.google.android.gms:play-services-location:16.0.0'
    implementation 'com.google.android.gms:play-services-auth:16.0.1'
    implementation 'com.google.android.gms:play-services-gcm:16.1.0'
    implementation 'com.google.android.gms:play-services-identity:16.0.0'
    implementation 'com.google.android.gms:play-services-auth-api-phone:16.0.0'

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

我也尝试更新我的 Firebase 依赖项,但每当我这样做时,我都会遇到这个错误 -

ERROR: 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:16:5-188:19 to override.

因此,我将它们保留在旧版本中以避免上述情况。

标签: androidfirebaseandroid-support-librarydependency-managementandroidx

解决方案


com.android.support一个人不能同时依赖androidx- 谷歌播放服务和 Firebase 的更高版本都引入了androidx依赖项。这些选项可供选择:

  • 要么将依赖项降级到仍在使用的版本com.android.support
  • 迁移到 androidx

dependencies {

    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.recyclerview:recyclerview:1.0.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'com.google.android.material:material:1.0.0'

    implementation 'com.google.firebase:firebase-core:17.0.1'
    implementation 'com.google.firebase:firebase-messaging:19.0.1'
    implementation 'com.google.firebase:firebase-auth:18.1.0'
    implementation 'com.google.firebase:firebase-storage:18.1.1'
    implementation 'com.google.firebase:firebase-firestore:20.2.0'
    implementation 'com.firebaseui:firebase-ui-firestore:4.2.1'

    implementation 'com.google.android.gms:play-services-base:17.1.0'
    implementation 'com.google.android.gms:play-services-location:17.0.0'
    implementation 'com.google.android.gms:play-services-auth:17.0.0'
    implementation 'com.google.android.gms:play-services-gcm:17.0.0'
    implementation 'com.google.android.gms:play-services-identity:17.0.0'
    implementation 'com.google.android.gms:play-services-auth-api-phone:17.1.0'
}

推荐阅读