我正在迁移一个曾经使用Maven进行依赖管理的Android项目到Gradle。
我是Gradle的新手,我遇到了Gradle无法编译项目的问题,因为它无法说它找不到一堆符号,而且所有符号都是support-v4库的一部分。< / p>
我认为我正确地添加了依赖项,因为我遵循了一堆教程。它们在我的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可以使用相同的依赖项编译项目。
非常感谢!
答案 0 :(得分:1)
我最终搞清楚了......
依赖项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
我想这是一个非常特定于我的项目的错误,但我决定在这里发布,以防其他人遇到同样的问题。
答案 1 :(得分:0)
您正在使用:
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 repo中的文件: