【问题标题】:How come Gradle appcompat-v7 error even though the version of the targeSdkVersoin is the same at 24?即使 targeSdkVersoin 的版本与 24 相同,Gradle appcompat-v7 怎么会出错?
【发布时间】:2017-08-24 12:02:28
【问题描述】:

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

我很困惑为什么它会找到两个版本 24.2.1 和 24.0.0,这是为什么呢?哪个版本合适?

谢谢

更新

我在终端上运行gradlew app:dependencies 并找到了这个, 如果您查看底部并找到此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 中有错误,应用程序仍然在之前运行)。

谢谢

【问题讨论】:

    标签: android gradle dependencies android-appcompat


    【解决方案1】:

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

    你必须使用gradlew app:dependencies

    这样你会发现哪些库与24.2.1和24.0.0有依赖关系

    【讨论】:

    • 我在终端上运行 'gradlew app:dependencies',然后搜索 'appcompat-v7:24.0.0' 并找到它。我已经写了我的修复更新。我的做法是正确的吗?现在错误消失了。谢谢
    【解决方案2】:

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

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

    例如

    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'
    }
    

    【讨论】:

    • 有什么快速找到它的建议吗?谢谢顺便说一句
    • 查看您正在使用的库的 github 页面上的 gradle 文件
    猜你喜欢
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    相关资源
    最近更新 更多