使用ViewPagerIndicator库与Android Studio和Gradle

120

我想使用Jake Wharton的ViewPagerIndicator库,但是在Android Studio的Gradle项目中无法正常工作。

我这样将它添加为依赖项:

    dependencies {
       // ... other ommitted
       compile 'com.viewpagerindicator:library:2.4.1'
       compile 'com.android.support:support-v4:19.0.1'
       compile 'com.nineoldandroids:library:2.4.0'
       // ...
    }

但是项目似乎没有识别到库中的任何组件。我想知道是否存在不同的support-v4版本或者nineoldandroids中的依赖问题...?

19个回答

204

我刚刚将一个版本推送到Maven中央仓库,所以您只需要添加该依赖项:

compile 'fr.avianey.com.viewpagerindicator:library:2.4.1.1@aar'

像这样声明 Maven 中央仓库:

repositories {
    mavenCentral()
}

4
谢谢。我不想在我的构建脚本中添加随意的Maven存储库,这样更好。 - Greg Ennis
我添加了所需的依赖项,但在gradle构建时无法解析它。确切的错误信息是:Failed to resolve: fr.avianey.com.viewpagerindicator:library:2.4.1有什么原因吗? - rrrocky
我将它添加到各自模块的build.gradle文件的dependency部分中。这里 - rrrocky
我在这里有什么遗漏吗? - rrrocky
2
fr.avianey.com.viewpagerindicator:library:2.4.1@aar - 你缺少了 @aar。 - Mark
显示剩余8条评论

146
很晚才来参加派对,但是在这里:
Jake Wharton没有将它发布为maven的aar包。但有一个团队通过他们的服务器提供了一个aar包, 你可以在build.gradle中像这样设置:
在声明插件后,将以下内容添加到源存储库中:
repositories {
    maven { url "http://dl.bintray.com/populov/maven" }
    mavenCentral()
}

这将会引用他们的Maven仓库,其中包含他们组合的打包AAR文件。做完这一步后,你只需要在依赖项中添加这行代码,在将项目与Gradle文件同步后,一切都应该正常工作。

确保Maven仓库位于mavenCentral()条目之上。否则,它会首先查找maven中央仓库并找到错误的包。

Android Studio为项目生成两个build.gradle文件,请确保将其放入正确的文件中!

dependencies {
    // ...
    compile 'com.viewpagerindicator:library:2.4.1@aar'
    // ...
}

如果您想查看一个实际运行的示例,我们在我们的应用程序中使用它:

https://github.com/pandanomic/SUREwalk_android/blob/master/surewalk/build.gradle


5
谢谢!只是想指出,bintray仓库必须位于mavenCentral()之上。你可以阅读这篇文章了解更多信息:http://blog.haunted-soft.com/2013/10/viewpagerindicator-aar-packaged.html - Ferran Maylinch
5
这似乎不再起作用了 - 我按照步骤操作,当Android Studio刷新项目时,我收到“Gradle 'XYZ' 项目刷新失败:找不到工件'com.viewpagerindicator:library:2.4.1:library.aar'”。 - Luke Sleeman
30
在最近的Android Studio版本中,项目包含两个Gradle文件,一个位于app/build.gradle中,另一个位于根目录下的/build.gradle中。根目录下的Gradle文件是您可以添加到所有子项目/模块中的通用配置选项位置。要使其生效,您需要将以下代码放在顶层build.gradle中: allprojects { repositories { maven { url "http://dl.bintray.com/populov/maven" } mavenCentral() } } - Luke Sleeman
67
现在请注意,依赖关系是 **compile 'com.viewpagerindicator:library:2.4.1'**。[参考链接:http://mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1] - Ricardo Pessoa
4
您正在尝试编译错误的库。您需要使用上面答案中指定的bintray存储库中的aar。在此线程中存在大量错误信息,人们对我的答案进行了糟糕的编辑,这有损于情况的澄清。 - Zac Sweers
显示剩余14条评论

55

我正在使用 Android Studio 0.8.2 和 gradle 0.10.+,但是被接受的答案对我不起作用。以下是我必须做的轻微更改,以便在我的项目中让 ABS 正常工作:

在你的项目的顶级 build.gradle 文件中,像这样在 allprojects 配置中添加 maven 存储库:

allprojects {
   repositories {
      maven { url "http://dl.bintray.com/populov/maven" }
      mavenCentral()
   }
}

并且在该模块的build.gradle文件中添加该依赖项,不要包含@aar

dependencies {
   // ...
   compile 'com.viewpagerindicator:library:2.4.1'
   // ...
}

请注意,如果您在其他地方使用了支持库并将其添加到依赖项中,则可能会出现奇怪的错误,因为ViewPager也会引入其自己的Support v4版本。请参考此链接 - https://dev59.com/amEi5IYBdhLWcg3wwecN - trippedout

50

Jitpack.io对于这种情况非常好。

首先,添加以下存储库:

repositories {
    // ...
    maven { url "https://jitpack.io" }
}

然后,只需添加指向GitHub仓库的依赖项:

dependencies {
    compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar'
}

谢谢你拯救了我!我会在其他地方发布你的答案:https://dev59.com/eV8e5IYBdhLWcg3wfaUy#35037805。 - Muhammad
@Juan Andres - 我只拿Gradle可以吗? - RoCkDevstack

28
在应用模块的 build.gradle 文件中,像这样将其添加到依赖项中:
dependencies {
   compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
   ...
}

1
这是正确的方法。因为它直接跳转到 GitHub 上的源项目,跳过第三方网站。 - user2408952

9

我按照以下步骤完成了这个技巧。无需导入库或其他任何东西。只需要两步操作,就可以完美地运行。

在 build.gradle(Project:...) 文件中:

allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }

在 build.gradle(Module:app) 文件中:
dependencies {
            compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
    }

5

我尝试了所有方法都无法导入该项目。我使用的是Android Studio 0.8.6和gradle 1.12。

唯一可行的解决方案就是从以下链接下载.aar库:

http://dl.bintray.com/populov/maven/com/viewpagerindicator/library/2.4.1/

然后按照以下方式在gradle中导入该库:

 repositories {
      flatDir {
        dirs 'libs'}
   }

 dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.0.0'
    compile(name:'library-2.4.1', ext:'aar') 
  }

希望这能帮到你!

2
只是为了澄清,library-2.4.1.aar 需要放置在您的模块的 libs 目录中,如果该目录不存在,则需要创建该目录。 - Sam

4
我正在使用 Studio 0.8.6 和 Gradle 1.12。我的项目与其他不同的地方是,我还使用了兼容性库,这导致 gradle 抱怨已经有两个 support-v4 库。因此,我需要按照以下方式排除已经包含的 support-v4
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:19.0.1'
    compile 'com.android.support:appcompat-v7:19.0.1'    
    compile ('com.viewpagerindicator:library:2.4.1') {
        exclude module: 'support-v4'
    }
}

然后它还抱怨有两个AndroidManifest.xml文件。

所以我也在android部分添加了exclude 'AndroidManifest.xml',像这样:

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

然后它就工作了。


无法运行:错误:依赖项com.viewpagerindicator:library:2.4.1的打包格式为'apklib',不受支持。只支持'aar'库文件。 - Govinda P

3

被标记为答案的帖子对我没用……Gradle报错“连接被拒绝”。

考虑到它看起来在这么长时间后仍然很稳定,我从https://bintray.com/populov/maven/com.viewpagerindicator:library下载了aar文件,将其复制到我的libs文件夹中,并像下面这样进行引用:

dependencies {
...
compile 'com.viewpagerindicator:library:2.4.1@aar'
}

很奇怪。我就在本周早些时候使用相同的方法将其添加到另一个项目中,对我来说仍然可以正常工作 :/ - Zac Sweers
1
这不再是正确的建议了,因为@a ar后缀不再需要。 - John Hamelink
4
对我没用,出现了 Artifact 'library.aar (com.viewpagerindicator:library:2.4.1)' not found. Searched in the following locations: https://jcenter.bintray.com/com/viewpagerindicator/library/2.4.1/library-2.4.1.aar 的错误。 - Sam

3
请确保所有库和您的应用程序中的support:support-v4版本相同,有时会导致问题,因此请在所有库和您的应用程序项目中使用相同的support:support-v4版本。

是的,这是可能的。有一个拉取请求打开以更新v4支持库(https://github.com/JakeWharton/Android-ViewPagerIndicator/pull/271)。看起来这个项目没有得到积极维护... :( - loeschg
嘿,ViewPagerInidicator是Android库。这意味着如果他们使用Maven,则最有可能是apklib工件,而Gradle仅适用于war工件。 - Eugen Martynov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接