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 ...?

loeschg
źródło

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...

avianey
źródło
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

Zac Sweers
źródło
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'
   // ...
}
mugiwarapy
źródło
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'
}
Juan Andrés Diana
źródło
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'
   ...
}
Md Yusuf Alam
źródło
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'
    }
Parsania Hardik
źródło
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!

vrunoa
źródło
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.

Jens
źródł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.

Jitesh Upadhyay
źródło
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'
}
devguy
źródło
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'
    ....
}
nyxee
źródło
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'
    }
Sam
źródło
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'
}
ODAXY
źródło
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.

Płomień udun
źródło
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.

pyus13
źródło
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.

Babatunde Adeyemi
źródło
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')

Uday Ramjiyani
źródło
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)

cn123h
źródło
0

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

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Rajan Kashiyani
źródło