Korzystanie z biblioteki ViewPagerIndicator z Android Studio i Gradle


118

Próbuję użyć biblioteki ViewPagerIndicator Jake'a Whartona , ale nie mogę jej uruchomić z moim projektem Gradle w Android Studio.

Dodaję to jako zależność taką:

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

ale projekt nie rozpoznaje żadnych komponentów w bibliotece. Zastanawiam się, czy istnieje problem z zależnościami z różnymi wersjami wsparcia v4 lub coś w dziewięciu starychandroidach ...?

Odpowiedzi:


199

Właśnie umieściłem wersję w maven central, więc musisz tylko dodać tę zależność:

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

I zadeklaruj maven central w ten sposób:

repositories {
    mavenCentral()
}

Mam nadzieję, że to pomoże...


4
Dziękuję Ci. Nie chciałem dodawać losowego repozytorium Maven do mojego skryptu kompilacji. O wiele lepiej.
Greg Ennis

Dodałem wspomnianą zależność, ale nie udało się jej rozwiązać w kompilacji Gradle. Dokładny błąd: Failed to resolve: fr.avianey.com.viewpagerindicator:library:2.4.1 jakikolwiek powód?
rockydgeekgod

czy dodałeś repozytorium w odpowiedniej sekcji ... to znaczy nie w repozytoriach wtyczek ...
avianey

Dodałem go w dependencysekcji w build.gradlepliku pojedynczego modułu . Tutaj
rockydgeekgod

2
fr.avianey.com.viewpagerindicator: library: 2.4.1@aar - brakuje @aar
Mark

147

Trochę za późno na imprezę, ale tutaj:

Jake Wharton nie wydał tego w Maven jako aar. Jest jednak grupa, która udostępniła aar za pośrednictwem swojego serwera, możesz to skonfigurować w następujący sposób w pliku build.gradle:

Dodaj to do repozytoriów źródłowych po zadeklarowaniu wtyczek:

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

Spowoduje to pozyskanie ich repozytorium maven, które zawiera spakowany plik aar, który złożyli razem. Gdy to zrobisz, możesz po prostu dodać tę linię do swoich zależności i wszystko powinno działać po zsynchronizowaniu projektu z plikami gradle.

Upewnij się, że repozytorium Maven znajduje się nad mavenCentral()wpisem. W przeciwnym razie najpierw zajrzy do centralnego repozytorium mavena i znajdzie niewłaściwy pakiet.

Android Studio generuje dwa build.gradlepliki dla projektów, upewnij się, że umieściłeś to we właściwym!

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

Używamy go w naszej aplikacji, jeśli chcesz zobaczyć działający przykład:

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


5
Dzięki! Chciałem tylko zauważyć, że repozytorium bintray musi znajdować się powyżej mavenCentral (). Możesz przeczytać to: blog.haunted-soft.com/2013/10/…
Ferran Maylinch

5
Wygląda na to, że to już nie działa - postępowałem zgodnie z instrukcjami i gdy Android Studio odświeża projekt, otrzymuję komunikat „Gradle 'XYZ' odświeżanie projektu nie powiodło się: Artefakt 'com.viewpagerindicator: biblioteka: 2.4.1: biblioteka.aar' nie znaleziono.
Luke Sleeman,

30
Po wielu błądzeniach odkryłem, że ostatnie wersje Android Studio tworzą projekty z dwoma plikami gradle - jeden w app / build.gradle i jeden w /build.gradel - ten w katalogu głównym to miejsce, w którym możesz dodać wspólne opcje konfiguracji do wszystkich podprojektów / modułów. Musisz umieścić: allprojects {repositories {maven {url " dl.bintray.com/populov/maven "} mavenCentral ()}} na najwyższym poziomie build.gradle, aby to działało
Luke Sleeman

67
uwaga teraz zależność jest kompilowana „com.viewpagerindicator: library: 2.4.1” [odniesienie:] mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1
Ricardo Pessoa

4
@OlegVaskevich, próbujesz skompilować niewłaściwą bibliotekę. Musisz użyć aar w repozytorium bintray określonym w odpowiedzi powyżej. W tym wątku jest sporo dezinformacji, które nie są wspomagane przez ludzi dokonujących złych zmian w mojej odpowiedzi.
Zac Sweers

56

Używam gradle 0.10. + Z Androidem Studio 0.8.2 i zaakceptowana odpowiedź nie działa dla mnie. Oto drobne zmiany, które musiałem zrobić, aby ABS działał w moim projekcie:

W build.gradlepliku najwyższego poziomu projektu dodaj repozytorium Maven w allprojectskonfiguracji w następujący sposób:

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

I w build.gradlepliku modułu dodaj zależność bez @aar:

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

Zauważ również, że jeśli korzystasz z biblioteki wsparcia w innym miejscu i dodałeś ją do swoich zależności, możesz otrzymać dziwny błąd, ponieważ viewpager również wprowadza własną wersję wsparcia v4. zobacz ten link - stackoverflow.com/questions/20989317/…
trippedout

49

Jitpack.io świetnie nadaje się do tej sytuacji.

Najpierw dodaj następujące repozytorium:

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

Następnie po prostu dodaj zależność wskazującą na repozytorium GitHub:

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

Zapisano dzień dzięki :) Prześlę Twoją odpowiedź gdzie indziej stackoverflow.com/questions/25702884/… .
Muhammad

@Juan Andres - Czy jest ok, jeśli wezmę tylko gradle?
RoCk RoCk

26

Dodaj to do swoich zależności w pliku build.gradle modułu aplikacji w następujący sposób:

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

1
Czy to właściwy sposób, aby to zrobić. Ponieważ przechodzi bezpośrednio do projektu źródłowego w GitHub, pomijając witryny stron trzecich.
user2408952

8

Zrobiłem sztuczkę, postępując zgodnie z tym. Nie ma potrzeby importowania biblioteki ani niczego. Tylko dwa kroki i bingo, działa idealnie.

W build.gradle (Project: ...):

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

W build.gradle (moduł: aplikacja):

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

5

Nie udało mi się zaimportować projektu z żadną z odpowiedzi. Używam Android Studio 0.8.6 i Gradle 1.12.

Jedynym rozwiązaniem, które wymyśliłem, było pobranie biblioteki .aar z:

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

a następnie zaimportuj bibliotekę w gradle w następujący sposób:

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

Mam nadzieję że to pomoże!


2
Dla wyjaśnienia, library-2.4.1.aarnależy umieścić go w libskatalogu modułu , który należy utworzyć, jeśli jeszcze nie istnieje.
Sam

4

Używam Studio 0.8.6 i Gradle 1.12

Różnica w moim projekcie mogła polegać na tym, że korzystam również z bibliotek zgodności, co spowodowało, że gradle narzekał na support-v4dwukrotne posiadanie biblioteki.

Musiałem więc wykluczyć już zawarte w support-v4ten sposób:

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

Następnie narzekał również na AndroidManifest.xmldwukrotne posiadanie pliku.

Więc dodałem też exclude 'AndroidManifest.xml'w androidsekcji takiej jak ta:

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

Wtedy zadziałało.


nie działa: Błąd: Pakowanie dla zależności com.viewpagerindicator: biblioteka: 2.4.1 to „apklib” i nie jest obsługiwane. Obsługiwane są tylko biblioteki „aar”.
Govinda Paliwal

3

upewnij się, że support: support-v4 jest taki sam we wszystkich bibliotekach i twojej aplikacji, czasami powoduje problem, więc używaj tego samego wsparcia: support-v4 w bibliotekach i projekcie aplikacji.


Tak, to jest możliwość. Jest otwarte żądanie ściągnięcia, aby zaktualizować bibliotekę obsługi v4 ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ). Wygląda na to, że ten projekt nie jest aktywnie utrzymywany ... :(
loeschg

Hej, ale ViewPagerInidicator to biblioteka Androida. Oznacza to, że jeśli używają mavena, to najprawdopodobniej jest to artefakt apklib, a gradle działa tylko z artefaktami wojennymi
Eugen Martynov

3

Post oznaczony jako odpowiedź nie zadziałał dla mnie ... Gradle narzekał na „Odmowa połączenia”.

Biorąc pod uwagę, że wygląda na to, że po tak długim czasie jest stabilny, po prostu pobieram plik aar z https://bintray.com/populov/maven/com.viewpagerindicator:library , skopiowany do mojego folderu libs i odwołuję się do niego w następujący sposób:

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

To dziwne. Właśnie użyłem tej samej metody, aby dodać go do innego projektu na początku tego tygodnia i nadal działa dobrze: /
Zac Sweers

1
To nie jest już poprawna rada, ponieważ przyrostek @aar nie jest już potrzebny.
John Hamelink,

4
Nie działa dla mnie; dostał 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

Oto, co zadziałało dla mnie:

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

tj. nie używaj adresu URL repozytorium.

następnie użyj:

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

Spróbuj także umieścić repozytorium mavena przed innymi.

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

I buduj z zależnościami:

  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

Ze względu na różnorodność tutaj jest odpowiedź, która nie używa mavena:

  1. Pobierz zip / tgz z ViewPagerIndicator

  2. W oknie projektu wybierz nawigację w projekcie.

  3. Przejdź do projektu> Nowy> Moduł.

  4. Importuj projekt Gradle

  5. Wyszukaj i wybierz rozpakowany folder biblioteki. Nadaj modułowi dowolną nazwę. Nazwałam toviewPagerIndicator

  6. Klikaj dalej, aż dojdziesz do ostatniego okna, w którym Finishmożna kliknąć. Jeśli otrzymasz Android Support Library is not installedwiadomość, nie martw się. Po prostu idź dalej i kliknij Finish.

  7. Poczekaj na zakończenie kompilacji Gradle i kompilacji projektu. Po zakończeniu dodaj to do zależności {..} wbuild.gradle (Module:app) :

     compile project(':viewPagerIndicator')

Biblioteka jest teraz dostępna do użytku.


0

Sprawdź to najpierw

Android Studio - NIEOCZEKIWANY WYJĄTEK NAJWYŻSZYM POZIOMIE:

jeśli te kontrole są w porządku, wspomnij poniżej.

Nie ma potrzeby uwzględniania support-v4 jako zależności twojego modułu, ponieważ biblioteka ViewPagerIndicator ma już support-v4 jako swoją zależność. Możesz więc spróbować to usunąć i zsynchronizować z Gradle za pomocą małego uroczego przycisku Gradle dostępnego na pasku narzędzi -

wprowadź opis obrazu tutaj

Zaktualizuj swoje pytanie, jeśli pojawia się jakiś błąd podczas synchronizacji.

AKTUALIZACJA:

Nie jestem pewien, ale może to być problem. Nie znalazłem żadnej biblioteki ViewPagerIndicator opartej na gradle. JackWarton przeniósł actionbarsherlock w gradle, ale ViewPagerIndicator nadal używa maven.


Dzięki, @ pyus13. Tak, ten przycisk projektu synchronizacji jest moim pierwszym krokiem podczas dodawania nowej zależności. To nie był problem. Zaktualizowałem moje pytanie.
loeschg

@loeschg Nie znalazłem, że jackwarton przeniósł viewpagerindicator w gradle. To może być problem.
pyus13

0

Możesz po prostu dołączyć bibliotekę ViewPagerIndicator bezpośrednio do aplikacji, jak opisano tutaj

Umożliwia importowanie biblioteki ViewPagerIndicator jako „istniejącego projektu” do bieżącego projektu.


0

U mnie też żadne z powyższych rozwiązań nie zadziałało. Ale to zadziałało dla mnie.

  1. Wystarczy dołączyć wymaganą bibliotekę biblioteki Viewpagerindicator Library

  2. Uwzględnij to w pliku build.gradle modułu aplikacji (nie będziesz mieć tam repozytorium, po prostu umieść go powyżej zależności.

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. dodaj to do swoich zależności.

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


0

Podsumowując: możesz wyszukać „ViewPagerIndicator” w http://mvnrepository.com/ , dowiesz się, że oryginalny com.viewpagerindicator nie ma czerwonego znacznika „Pakiety Androida”, więc nie możesz go używać z Gradle. Możesz znaleźć inny z czerwonym znacznikiem, upewnij się, że ma tę samą wersję co oryginał. (tj. ktoś tworzy pakiet Androida na podstawie oryginalnego)


0

Ma problem z nowszą klasą. Po prostu zmień zależność, jak poniżej.

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.