Gradle 找不到 android 支持 v4 的符号

Gradle cannot find symbol for android support v4

我正在将一个曾经使用 Maven 进行依赖管理的 Android 项目迁移到 Gradle。

我是 Gradle 的新手,我遇到了 Gradle 无法编译项目的问题,因为它没有说找不到一堆符号,所有这些都是方法是 support-v4 库的一部分。

我认为我正确地添加了依赖项,因为我遵循了一堆教程。它们在我的 build.gradle 文件中的列出方式如下:

dependencies {
    compile ('com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar') {
        exclude module: 'support-v4'
    }
    compile ('com.facebook.android:facebook-android-sdk:4.1.0') {
        exclude module: 'support-v4'
    }

    compile (
        'com.android.support:appcompat-v7:22.2.1',
        'com.android.support:support-v4:22.2.1',
        'com.android.support:recyclerview-v7:22.2.1',
        'com.android.support:cardview-v7:22.2.1',
        'com.google.android.gms:play-services:8.3.0',
        'com.github.satyan:sugar:1.3',
        'se.emilsjolander:stickylistheaders:2.5.2',
        'br.com.estudio89:sentry:1.0-SNAPSHOT',
        'br.com.estudio89:syncing:1.0.17',
        'br.com.estudio89:push_messaging:1.0.3',
        'com.joanzapata.android:android-iconify:1.0.9',
        'com.squareup.picasso:picasso:2.5.2',
        'info.hoang8f:android-segmented:1.0.5',
        'joda-time:joda-time:2.7',
        'com.afollestad:material-dialogs:0.7.5.1',
        'com.facebook.rebound:rebound:0.3.8',
        'commons-net:commons-net:3.3',
        files("src/main/libs/YouTubeAndroidPlayerApi.jar")
    )

}

我花了很多时间试图解决这个问题,但我做不到。

我在尝试从命令行构建项目时遇到的错误之一如下:

error: cannot find symbol
        menuSettings = MenuItemCompat.getActionView(menu.findItem(R.id.action_settings));
                                     ^
  symbol:   method getActionView(MenuItem)
  location: class MenuItemCompat

我做错了什么? Maven 可以使用相同的依赖集编译项目。

非常感谢!

我终于弄明白了...

依赖项 com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar 具有 support-v4 作为依赖项(作为 jar 包含在库中)。我知道这一点,因此我在该依赖项中添加了 exclude module: 'support-v4' 行。但是,排除似乎不起作用,gradle 实际上是在编译这个旧版本的支持库,而不是我在 build.gradle 文件中实际指定的那个。

我所做的是从使用 github 上托管的库切换到另一个存储库:fr.avianey.com.viewpagerindicator:library:2.4.1

我想这是一个非常特定于我的项目的错误,但我决定 post 在这里以防万一其他人 运行 遇到同样的问题。

您正在使用:

 compile ('com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar') {
        exclude module: 'support-v4'
    }

这种排除是行不通的。
你正在从 jitpack 中获取这个库。
This library 将支持库添加为 jar 而不是 gradle 依赖项。

这意味着pom文件没有依赖关系,你不能用gradle排除jar文件,因为jar在aar文件里面(没有pom怎么能gradle 知道应该排除这些文件吗?)。

你可以查看 jitpack 仓库中的文件: