Sử dụng thư viện ViewPagerIndicator với Android Studio và Gradle


118

Tôi đang cố gắng sử dụng thư viện ViewPagerIndicator của Jake Wharton , nhưng tôi không thể làm cho nó hoạt động với dự án Gradle của tôi trong Android Studio.

Tôi thêm nó như một phụ thuộc như vậy:

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

nhưng dự án dường như không nhận ra bất kỳ thành phần nào trong thư viện. Tôi tự hỏi liệu có vấn đề phụ thuộc với các phiên bản support-v4 khác nhau hay thứ gì đó trong nineoldandroids không ...?

Câu trả lời:


199

Tôi vừa đẩy một phiên bản bên trong trung tâm maven nên bạn chỉ cần thêm phần phụ thuộc đó vào:

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

Và khai báo trung tâm maven như thế này:

repositories {
    mavenCentral()
}

Hy vọng nó giúp...


4
Cảm ơn bạn. Tôi không muốn thêm một số kho lưu trữ maven ngẫu nhiên vào tập lệnh xây dựng của mình. Điều này tốt hơn nhiều.
Greg Ennis

Tôi đã thêm phần phụ thuộc đã nói nhưng nó không thể giải quyết nó trên bản dựng gradle. Lỗi chính xác: Failed to resolve: fr.avianey.com.viewpagerindicator:library:2.4.1 Bất kỳ lý do tại sao?
rockydgeekgod

bạn đã thêm kho ở phần bên ... Ý tôi là không có trong kho plugin ...
avianey

Tôi đã thêm nó vào dependencyphần trong build.gradletệp mô-đun riêng lẻ . Đây
rockydgeekgod

2
fr.avianey.com.viewpagerindicator: thư viện: 2.4.1@aar - bạn đang bỏ lỡ những @aar
Đánh dấu

147

Đến bữa tiệc hơi muộn, nhưng ở đây:

Jake Wharton đã không phát hành nó trong maven như một aar. Mặc dù vậy, có một nhóm đã cung cấp thông tin về nó thông qua máy chủ của họ, bạn có thể thiết lập nó như thế này trong build.gradle của mình:

Thêm cái này vào kho lưu trữ nguồn của bạn sau khi bạn khai báo các plugin của mình:

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

Điều này sẽ cung cấp nguồn repo maven của họ, chứa một aar được đóng gói mà họ đặt lại với nhau. Sau khi hoàn tất, bạn có thể chỉ cần thêm dòng này vào phần phụ thuộc của mình và mọi thứ sẽ hoạt động sau khi bạn đồng bộ hóa dự án với các tệp gradle của mình.

Đảm bảo rằng Maven Repo được liệt kê phía trên mavenCentral() mục nhập. Nếu không, trước tiên nó sẽ tìm trong kho lưu trữ trung tâm của maven và tìm sai gói.

Android Studio tạo hai build.gradletệp cho các dự án, hãy đảm bảo bạn đặt tệp này vào đúng tệp!

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

Chúng tôi sử dụng nó trong ứng dụng của mình nếu bạn muốn xem một ví dụ hoạt động:

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


5
Cảm ơn! Chỉ muốn lưu ý rằng repo bintray phải ở trên mavenCentral (). Bạn có thể đọc cái này: blog.haunted-soft.com/2013/10/…
Ferran Maylinch

5
Điều này dường như không còn hoạt động - Tôi đã làm theo các bước và khi studio android làm mới dự án, tôi nhận được lỗi làm mới dự án "Gradle 'XYZ': Không tìm thấy Artifact 'com.viewpagerindicator: library: 2.4.1: library.aar'.
Luke Sleeman

30
Sau nhiều lần tìm hiểu xung quanh, tôi đã tìm thấy các phiên bản gần đây của android studio sản xuất các dự án với hai tệp gradle - một tệp bên trong app / build.gradle và một tệp tại /build.gradel - tệp trong thư mục gốc là nơi bạn có thể thêm các tùy chọn cấu hình chung cho tất cả các dự án con / mô-đun. Bạn cần đặt: allprojects {repositories {maven {url " dl.bintray.com/populov/maven "} mavenCentral ()}} trong build.gradle cấp cao nhất để nó hoạt động
Luke Sleeman

67
chú ý bây giờ phụ thuộc là biên dịch 'com.viewpagerindicator: library: 2.4.1' [tham khảo:] mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1
Ricardo Pessoa

4
@OlegVaskevich bạn đang cố gắng biên dịch thư viện sai. Bạn cần sử dụng aar trong repo bintray được chỉ định trong câu trả lời ở trên. Có một lượng lớn thông tin sai lệch trong chủ đề này không được giúp đỡ bởi những người thực hiện các chỉnh sửa xấu cho câu trả lời của tôi.
Zac Sweers

56

Tôi đang sử dụng gradle 0.10. + Với Android Studio 0.8.2 và câu trả lời được chấp nhận không phù hợp với tôi. Đây là những thay đổi nhỏ mà tôi phải làm để ABS hoạt động trong dự án của tôi:

Trong build.gradletệp cấp cao nhất của dự án của bạn, hãy thêm kho lưu trữ maven trong allprojectscấu hình như sau:

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

Và trong build.gradletệp của mô-đun, hãy thêm phần phụ thuộc mà không có @aar:

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

cũng lưu ý nếu bạn đang sử dụng thư viện hỗ trợ ở nơi khác và đã thêm nó vào phần phụ thuộc của bạn, bạn có thể gặp lỗi lạ vì viewpager cũng mang đến phiên bản hỗ trợ v4 của riêng nó. tham khảo liên kết này - stackoverflow.com/questions/20989317/…
trippedout

49

Jitpack.iotuyệt vời cho tình huống này.

Đầu tiên, hãy thêm kho lưu trữ sau:

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

Sau đó, chỉ cần thêm phần phụ thuộc trỏ tới repo GitHub:

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

Đã lưu trong ngày, cảm ơn :) Tôi sẽ đăng câu trả lời của bạn ở một nơi khác stackoverflow.com/questions/25702884/… .
Muhammad

@Juan Andres - Có ổn không nếu tôi chỉ thi lấy điểm?
RoCk RoCk

26

Thêm cái này vào phần phụ thuộc của bạn trong tệp build.gradle của mô-đun ứng dụng của bạn như sau:

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

1
Idd đây là cách chính xác để làm điều đó. Vì nó đi thẳng đến dự án nguồn trên GitHub, bỏ qua các trang web của bên thứ 3.
user2408952 Ngày

8

Tôi đã thực hiện thủ thuật bằng cách làm theo điều này. Không cần nhập thư viện hoặc không có gì. Chỉ cần hai bước và chơi lô tô, nó hoạt động hoàn hảo.

Trong build.gradle (Dự án: ...):

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

Trong build.gradle (Mô-đun: ứng dụng):

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

5

Tôi không thể quản lý để nhập dự án với bất kỳ câu trả lời nào. Tôi đang sử dụng Android Studio 0.8.6 và gradle 1.12.

Giải pháp duy nhất tôi nghĩ ra là tải xuống thư viện .aar từ:

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

và sau đó nhập thư viện trong gradle như thế này:

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

Hi vọng điêu nay co ich!


2
Chỉ cần làm rõ, library-2.4.1.aarcần phải được đặt trong thư mục của mô-đun của bạn libs, mà bạn nên tạo nếu nó chưa tồn tại.
Sam

4

Tôi đang sử dụng Studio 0.8.6 và Gradle 1.12

Một sự khác biệt trong dự án của tôi có thể là tôi cũng đang sử dụng các thư viện khả năng tương thích khiến gradle phàn nàn về việc có support-v4lib hai lần.

Vì vậy, tôi đã phải loại trừ những thứ đã được bao gồm support-v4như thế này:

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

Sau đó, nó cũng phàn nàn về việc có AndroidManifest.xmltệp hai lần.

Vì vậy, tôi cũng đã thêm exclude 'AndroidManifest.xml'vào androidphần như thế này:

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

Sau đó, nó hoạt động.


không hoạt động: Lỗi: Đóng gói cho phụ thuộc com.viewpagerindicator: thư viện: 2.4.1 là 'apklib' và không được hỗ trợ. Chỉ các thư viện 'aar' được hỗ trợ.
Govinda Paliwal

3

vui lòng đảm bảo rằng hỗ trợ: support-v4 giống nhau trong tất cả libs và ứng dụng của bạn, đôi khi nó gây ra sự cố, vì vậy hãy sử dụng cùng một hỗ trợ: support-v4 trên libs và dự án ứng dụng của bạn.


Vâng, đây là một khả năng. Có một yêu cầu kéo đang mở để cập nhật thư viện hỗ trợ v4 ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ). Không giống như dự án này đang được tích cực duy trì ... :(
loeschg

Này, nhưng ViewPagerInidicator là thư viện Android. Nó có nghĩa là nếu họ sử dụng maven sau đó nó có lẽ là hầu hết các vật phẩm và các công trình apklib gradle với chỉ artefact chiến tranh
Eugen Martynov

3

Bài đăng được đánh dấu là câu trả lời không hoạt động với tôi ... Gradle đã phàn nàn về "Kết nối bị từ chối".

Xem xét rằng nó có vẻ ổn định sau tất cả thời gian, tôi chỉ cần tải xuống tệp aar từ https://bintray.com/populov/maven/com.viewpagerindicator:library , được sao chép vào thư mục libs của tôi và tham chiếu nó như vậy:

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

Thật ki quặc. Tôi vừa sử dụng cùng một phương pháp để thêm nó vào một dự án khác vào đầu tuần này và nó vẫn hoạt động tốt đối với tôi: /
Zac Sweers

1
Đây không còn là lời khuyên đúng nữa vì hậu tố @aar không còn cần thiết nữa.
John Hamelink

4
Không làm việc cho tôi; có 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

2

Đây là những gì làm việc cho tôi:

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

tức là, không sử dụng URL repo.

sau đó sử dụng:

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

2
Add it in your build.gradle at the end of repositories:
Ste 1
 repositories {
        // ...
        maven { url "https://jitpack.io" }
    }
Step 2. Add the dependency in the form

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

2

Cũng cố gắng đặt kho lưu trữ maven trước những người khác.

 buildscript {
    repositories {
        maven { url "http://dl.bintray.com/populov/maven" }
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

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

Và xây dựng với các phụ thuộc:

  apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId ""
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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

2

Vì sự đa dạng, đây là một câu trả lời không sử dụng maven:

  1. Tải xuống zip / tgz từ ViewPagerIndicator

  2. Trong cửa sổ dự án, chọn điều hướng dự án.

  3. Đi tới dự án> Mới> Mô-đun.

  4. Nhập dự án Gradle

  5. Duyệt đến và chọn thư mục thư viện đã giải nén. Đặt tên cho mô-đun bất cứ điều gì bạn muốn. Tôi đặt tên cho nóviewPagerIndicator

  6. Tiếp tục nhấp vào tiếp theo cho đến khi bạn đến cửa sổ cuối cùng Finishcó thể nhấp được. Nếu bạn nhận được Android Support Library is not installedtin nhắn, đừng lo lắng. Chỉ cần tiếp tục và nhấp vào Finish.

  7. Chờ quá trình tạo gradle và biên dịch dự án hoàn tất. Sau khi hoàn tất, hãy thêm phần này vào phần phụ thuộc {..} trong build.gradle (Module:app):

     compile project(':viewPagerIndicator')

Thư viện hiện có sẵn để bạn sử dụng.


0

Vui lòng kiểm tra cái này trước

Android Studio - NGOẠI LỆ CẤP ĐỘ CHƯA TỪNG CÓ:

nếu những kiểm tra này là ok, hãy đề cập bên dưới.

Không cần bao gồm support-v4 làm phần phụ thuộc của mô-đun của bạn vì thư viện ViewPagerIndicator đã có support-v4 làm phần phụ thuộc của nó. Vì vậy, bạn có thể thử loại bỏ điều đó và đồng bộ hóa với gradle bằng cách sử dụng nút gradle nhỏ xinh xắn có sẵn trong thanh công cụ -

nhập mô tả hình ảnh ở đây

Cập nhật câu hỏi của bạn nếu bạn gặp bất kỳ lỗi nào khi đồng bộ hóa.

ĐÃ CẬP NHẬT:

Tôi không chắc lắm nhưng có thể là vấn đề khi tôi không tìm thấy bất kỳ Thư viện ViewPagerIndicator nào dựa trên gradle. JackWarton đã chuyển actionbarsherlock trong gradle nhưng ViewPagerIndicator vẫn sử dụng maven.


Cảm ơn, @ pyus13. Vâng, nút dự án đồng bộ đó là bước đầu tiên của tôi khi thêm một phụ thuộc mới. Đó không phải là vấn đề. Tôi đã cập nhật câu hỏi của mình.
loeschg

@loeschg Tôi không thấy rằng jackwarton đã di chuyển viewpagerindicator trong gradle. Nó có thể là một vấn đề.
pyus 13

0

Bạn chỉ có thể bao gồm thư viện ViewPagerIndicator trực tiếp trong ứng dụng của mình như được mô tả ở đây

Nó cho phép bạn nhập thư viện ViewPagerIndicator dưới dạng “Dự án hiện có” vào dự án hiện tại của bạn.


0

Đối với tôi, bất kỳ giải pháp nào ở trên cũng không hoạt động. Nhưng điều này đã làm việc cho tôi.

  1. Chỉ cần bao gồm thủ thư bắt buộc từ Thư viện Viewpagerindicator tại đây

  2. Bao gồm điều này trong build.gradle của mô-đun ứng dụng của bạn (bạn sẽ không có kho lưu trữ ở đó chỉ bao gồm nó ở trên các phần phụ thuộc.

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. thêm điều này vào phụ thuộc của bạn.

compile (name:'library-2.4.1',ext:'aar')


0

Tóm lại: bạn có thể tìm kiếm "ViewPagerIndicator" tại http://mvnrepository.com/ , bạn sẽ tìm ra com.viewpagerindicator gốc không có dấu đỏ "Android Packages", vì vậy bạn không thể sử dụng nó với Gradle. Bạn có thể tìm một cái khác có điểm đánh dấu màu đỏ, đảm bảo nó có cùng phiên bản với phiên bản gốc. (tức là một số người tạo một gói android dựa trên gói gốc)


0

Nó có một vấn đề về gradle mới hơn. Chỉ cần thay đổi phụ thuộc như dưới đây.

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.