为什么Gradle appcompat-v7错误,即使targeSdkVersoin的版本在24时是相同的?

时间:2017-03-30 13:53:25

标签: android gradle dependencies android-appcompat

This is the error when I hover above it

应用程序在我构建时运行,并且运行正常。但我想解决这个问题,因为它可能在将来引起问题。图片显示我悬停在它上面时的错误。有关如何解决此问题的任何建议?

我很困惑为什么它发现了两个版本24.2.1和24.0.0,为什么会这样?哪个版本是正确的?

谢谢

更新

我在终端上运行gradlew app:dependencies找到了这个, 如果你看一下botton并发现这个com.android.support:appcompat-v7:24.0.0 (在底部)

+--- com.google.android.gms:play-services:10.2.1
|    +--- com.google.android.gms:play-services-ads:10.2.1
|    |    +--- com.google.android.gms:play-services-ads-lite:10.2.1
|    |    |    \--- com.google.android.gms:play-services-basement:10.2.1
|    |    |         \--- com.android.support:support-v4:24.0.0 -> 24.2.1 (*)
|    |    +--- com.google.android.gms:play-services-base:10.2.1
|    |    |    +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    |    \--- com.google.android.gms:play-services-tasks:10.2.1
|    |    |         \--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-clearcut:10.2.1
|    |    |    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |    |    \--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    \--- com.google.android.gms:play-services-gass:10.2.1
|    |         \--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    +--- com.google.android.gms:play-services-ads-lite:10.2.1 (*)
|    +--- com.google.android.gms:play-services-analytics:10.2.1
|    |    +--- com.google.android.gms:play-services-analytics-impl:10.2.1
|    |    |    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |    |    \--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    \--- com.google.android.gms:play-services-tagmanager-v4-impl:10.2.1
|    |         +--- com.google.android.gms:play-services-analytics-impl:10.2.1 (*)
|    |         +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |         \--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    +--- com.google.android.gms:play-services-analytics-impl:10.2.1 (*)
|    +--- com.google.android.gms:play-services-appinvite:10.2.1
|    |    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    \--- com.google.android.gms:play-services-tasks:10.2.1 (*)
|    +--- com.google.android.gms:play-services-auth:10.2.1
|    |    +--- com.google.android.gms:play-services-auth-base:10.2.1
|    |    |    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |    |    \--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    \--- com.google.android.gms:play-services-tasks:10.2.1 (*)
|    +--- com.google.android.gms:play-services-auth-base:10.2.1 (*)
|    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    +--- com.google.android.gms:play-services-cast-framework:10.2.1
|    |    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |    +--- com.google.android.gms:play-services-cast:10.2.1
|    |    |    +--- com.google.android.gms:play-services-base:10.2.1 (*)
|    |    |    +--- com.google.android.gms:play-services-basement:10.2.1 (*)
|    |    |    \--- **com.android.support:mediarouter-v7:24.0.0**
|    |    |         +--- com.android.support:palette-v7:24.0.0
|    |    |         |    \--- com.android.support:support-v4:24.0.0 -> 24.2.1 (*)
|    |    |         \--- **com.android.support:appcompat-v7:24.0.0** -> 24.2.1 (*)

如果我按照它的根并找到com.android.support:mediarouter-v7:24.0.0,那么我将它添加到依赖项并将其更改为compile com.android.support:mediarouter-v7:24.2.1,现在错误消失了。这是正确的做法吗?顺便说一下,我运行我的应用程序并且没有错误(此应用程序仍然运行之前,尽管gradle中有错误)。

由于

2 个答案:

答案 0 :(得分:1)

  

我很困惑为什么它找到了两个版本24.2.1和24.0.0,

您必须使用gradlew app:dependencies

通过这种方式,您将找到哪些库具有24.2.1和24.0.0

的依赖关系

答案 1 :(得分:0)

您使用的其中一个库取决于特定的AppCompat版本,但您在自己的应用程序中引用了不同的版本。

找出正在执行此操作的库,然后排除导致构建错误的AppCompat引用。

e.g。

compile("com.your.libary:1.0.0") {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.android.support', module: 'support-v4'
    exclude group: 'com.android.support', module: 'appcompat-v7'
    exclude group: 'com.android.support', module: 'preference-v7'
}