Verwenden der ViewPagerIndicator-Bibliothek mit Android Studio und Gradle

118

Ich versuche, die ViewPagerIndicator-Bibliothek von Jake Wharton zu verwenden, kann sie jedoch mit meinem Gradle-Projekt in Android Studio nicht zum Laufen bringen.

Ich füge es als Abhängigkeit wie folgt hinzu:

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

Das Projekt scheint jedoch keine Komponenten in der Bibliothek zu erkennen. Ich frage mich, ob es ein Abhängigkeitsproblem mit verschiedenen Support-v4-Versionen oder etwas in Nineoldandroids gibt ...?

loeschg
quelle

Antworten:

199

Ich habe gerade eine Version in Maven Central verschoben, sodass Sie nur diese Abhängigkeit hinzufügen müssen:

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

Und deklarieren Sie Maven Central wie folgt:

repositories {
    mavenCentral()
}

Ich hoffe es hilft...

avianey
quelle
4
Danke dir. Ich wollte meinem Build-Skript kein zufälliges Maven-Repository hinzufügen. Das ist viel besser.
Greg Ennis
Ich habe die genannte Abhängigkeit hinzugefügt, aber sie kann beim Gradle-Build nicht aufgelöst werden. Genauer Fehler: Failed to resolve: fr.avianey.com.viewpagerindicator:library:2.4.1 Irgendein Grund warum?
Rockydgeekgod
Haben
Ich habe es im dependencyAbschnitt in der einzelnen Moduldatei hinzugefügt build.gradle. Hier
rockydgeekgod
2
fr.avianey.com.viewpagerindicator: Bibliothek: 2.4.1@aar - Sie vermissen die @aar
Mark
147

Ein bisschen spät zur Party, aber hier:

Jake Wharton hat es nicht in Maven als Aar veröffentlicht. Es gibt jedoch eine Gruppe, die einen Teil davon über ihren Server verfügbar gemacht hat. Sie können ihn in Ihrem build.gradle wie folgt einrichten:

Fügen Sie dies Ihren Quell-Repositorys hinzu, nachdem Sie Ihre Plugins deklariert haben:

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

Dies wird ihr Maven Repo beschaffen, das einen verpackten Aar enthält, den sie zusammenstellen. Sobald dies erledigt ist, können Sie diese Zeile einfach zu Ihren Abhängigkeiten hinzufügen und alles sollte funktionieren, sobald Sie Ihr Projekt mit Ihren Gradle-Dateien synchronisiert haben.

Stellen Sie sicher, dass das Maven Repo über dem mavenCentral()Eintrag aufgeführt ist. Andernfalls wird zuerst im zentralen Repository von maven nach dem falschen Paket gesucht.

Android Studio generiert zwei build.gradleDateien für Projekte. Stellen Sie sicher, dass Sie diese in die richtige Datei einfügen.

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

Wir verwenden es in unserer App, wenn Sie ein funktionierendes Beispiel sehen möchten:

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

Zac Sweers
quelle
5
Vielen Dank! Ich wollte nur bemerken, dass bintray repo über mavenCentral () liegen muss. Sie können dies lesen: blog.haunted-soft.com/2013/10/…
Ferran Maylinch
5
Dies scheint nicht mehr zu funktionieren - ich habe die Schritte befolgt und wenn Android Studio das Projekt aktualisiert, wird "Gradle 'XYZ' Projektaktualisierung fehlgeschlagen: Artefakt 'com.viewpagerindicator: library: 2.4.1: library.aar' nicht gefunden.
Luke Sleeman
30
Nach langem Hin und Her habe ich festgestellt, dass aktuelle Versionen von Android Studio Projekte mit zwei Gradle-Dateien produzieren - eine in app / build.gradle und eine in /build.gradel - in der im Stammverzeichnis können Sie allgemeine Konfigurationsoptionen hinzufügen zu allen Teilprojekten / Modulen. Sie müssen: allprojects {repositories {maven {url " dl.bintray.com/populov/maven "} mavenCentral ()}} in das build.gradle der obersten Ebene einfügen, damit es funktioniert
Luke Sleeman
67
Aufmerksamkeit jetzt ist die Abhängigkeit kompiliert 'com.viewpagerindicator: library: 2.4.1' [Referenz:] mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1
Ricardo Pessoa
4
@OlegVaskevich Sie versuchen, die falsche Bibliothek zu kompilieren. Sie müssen das aar in dem in der obigen Antwort angegebenen bintray repo verwenden. Es gibt eine Menge Fehlinformationen in diesem Thread, denen nicht geholfen wird, wenn Leute meine Antwort schlecht bearbeiten.
Zac Sweers
56

Ich verwende Gradle 0.10. + Mit Android Studio 0.8.2 und die akzeptierte Antwort hat bei mir nicht funktioniert. Dies sind die geringfügigen Änderungen, die ich vornehmen musste, damit ABS in meinem Projekt funktioniert:

build.gradleFügen Sie in der Top-Level- Datei Ihres Projekts das Maven-Repository in der allprojectsKonfiguration folgendermaßen hinzu:

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

Fügen Sie in der build.gradleDatei des Moduls die Abhängigkeit hinzu, ohne @aar:

dependencies {
   // ...
   compile 'com.viewpagerindicator:library:2.4.1'
   // ...
}
Mugiwarapy
quelle
Beachten Sie außerdem, dass Sie möglicherweise einen seltsamen Fehler erhalten, wenn Sie die Support-Bibliothek an anderer Stelle verwenden und zu Ihren Abhängigkeiten hinzufügen, da Viewpager auch eine eigene Version von Support v4 einbringt. Siehe
ausgelöst
49

Jitpack.io ist groß für diese Situation.

Fügen Sie zunächst das folgende Repository hinzu:

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

Fügen Sie dann einfach die Abhängigkeit hinzu, die auf das GitHub-Repo verweist:

dependencies {
    compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar'
}
Juan Andrés Diana
quelle
Den Tag gerettet, danke :) Ich werde Ihre Antwort an einer anderen Stelle veröffentlichen . Stackoverflow.com/questions/25702884/… .
Muhammad
@ Juan Andres - Ist es in Ordnung, wenn ich nur den Gradle nehme?
RoCk RoCk
26

Fügen Sie dies zu Ihren Abhängigkeiten in der build.gradle-Datei Ihres App-Moduls hinzu:

dependencies {
   compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
   ...
}
Md Yusuf Alam
quelle
1
Idd das ist der richtige Weg, es zu tun. Da es direkt zum Quellprojekt auf GitHub geht, werden Websites von Drittanbietern übersprungen.
user2408952
8

Ich habe den Trick gemacht, indem ich dem gefolgt bin. Keine Notwendigkeit, Bibliothek oder nichts zu importieren. Nur zwei Schritte und Bingo, es funktioniert perfekt.

In build.gradle (Projekt: ...):

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

In build.gradle (Modul: App):

dependencies {
            compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
    }
Parsania Hardik
quelle
5

Ich konnte das Projekt mit keiner der Antworten importieren. Ich benutze Android Studio 0.8.6 und Gradle 1.12.

Die einzige Lösung, die ich gefunden habe, war das Herunterladen der .aar-Bibliothek von:

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

und importieren Sie dann die Bibliothek in gradle wie folgt:

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

Hoffe das hilft!

vrunoa
quelle
2
Zur Verdeutlichung library-2.4.1.aarmuss es in das libsVerzeichnis Ihres Moduls gestellt werden , das Sie erstellen sollten, falls es noch nicht vorhanden ist.
Sam
4

Ich benutze Studio 0.8.6 und Gradle 1.12

Ein Unterschied in meinem Projekt könnte gewesen sein, dass ich auch die Kompatibilitätsbibliotheken verwende, die Gradle dazu gebracht haben, sich über die support-v4zweimalige Verwendung der Bibliothek zu beschweren .

Also musste ich das bereits enthaltene support-v4so ausschließen:

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

Dann beschwerte es sich auch darüber, die AndroidManifest.xmlDatei zweimal zu haben.

Also habe ich auch exclude 'AndroidManifest.xml'in diesem androidAbschnitt Folgendes hinzugefügt :

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

Dann hat es funktioniert.

Jens
quelle
funktioniert nicht: Fehler: Verpackung für Abhängigkeit com.viewpagerindicator: Bibliothek: 2.4.1 ist 'apklib' und wird nicht unterstützt. Es werden nur 'aar'-Bibliotheken unterstützt.
Govinda Paliwal
3

Bitte stellen Sie sicher, dass support: support-v4 in allen Bibliotheken und Ihrer Anwendung gleich ist. Manchmal verursacht es Probleme. Verwenden Sie daher denselben Support: support-v4 für alle Bibliotheken und Ihr App-Projekt.

Jitesh Upadhyay
quelle
Ja, das ist eine Möglichkeit. Es ist eine Pull-Anforderung zum Aktualisieren der v4-Supportbibliothek geöffnet ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ). Sieht nicht so aus, als würde dieses Projekt aktiv gepflegt ... :(
loeschg
Hey, aber ViewPagerInidicator ist eine Android-Bibliothek. Es bedeutet, wenn sie Maven verwenden, dann ist es höchstwahrscheinlich ein Apklib-Artefakt und Gradle arbeitet nur mit Kriegsartefakt
Eugen Martynov
3

Der als Antwort gekennzeichnete Beitrag hat bei mir nicht funktioniert ... Gradle beschwerte sich über "Verbindung abgelehnt".

In Anbetracht dessen, dass es nach all dieser Zeit stabil aussieht, lade ich einfach die aar-Datei von https://bintray.com/populov/maven/com.viewpagerindicator:library herunter , kopiere sie in meinen libs-Ordner und verweise wie folgt darauf:

dependencies {
...
compile 'com.viewpagerindicator:library:2.4.1@aar'
}
devguy
quelle
Das ist seltsam. Ich habe gerade die gleiche Methode verwendet, um es einem anderen Projekt Anfang dieser Woche hinzuzufügen, und es funktioniert immer noch gut für mich: /
Zac Sweers
1
Dies ist kein korrekter Rat mehr, da das Suffix @aar nicht mehr benötigt wird.
John Hamelink
4
Hat bei mir nicht funktioniert; bekam 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

Das hat bei mir funktioniert:

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

Verwenden Sie also nicht die Repo-URL.

dann benutze:

dependencie {
    ....
    compile 'com.mcxiaoke.viewpagerindicator:library:2.4.1@aar'
    ....
}
Nyxee
quelle
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
quelle
2

Versuchen Sie auch, das Maven-Repository vor anderen zu platzieren.

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

Und mit Abhängigkeiten bauen:

  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
quelle
2

Aus Gründen der Abwechslung gibt es hier eine Antwort, bei der kein Maven verwendet wird:

  1. Laden Sie zip / tgz von ViewPagerIndicator herunter

  2. Wählen Sie im Projektfenster die Projektnavigation aus.

  3. Gehen Sie zu Projekt> Neu> Modul.

  4. Gradle-Projekt importieren

  5. Navigieren Sie zum entpackten Bibliotheksordner und wählen Sie ihn aus. Benennen Sie das Modul nach Ihren Wünschen. Ich habe es genanntviewPagerIndicator

  6. Klicken Sie weiter auf Weiter, bis Sie das letzte Fenster erreichen, in dem Sie klicken können Finish. Wenn Sie die Android Support Library is not installedNachricht erhalten, machen Sie sich keine Sorgen. Einfach weitermachen und klicken Finish.

  7. Warten Sie, bis der Gradle-Build und die Projektkompilierung abgeschlossen sind. Wenn Sie fertig sind, fügen Sie dies zu den Abhängigkeiten {..} hinzu in build.gradle (Module:app):

     compile project(':viewPagerIndicator')

Die Bibliothek steht Ihnen jetzt zur Verfügung.

Flamme von Udun
quelle
0

Bitte überprüfen Sie dies zuerst

Android Studio - UNERWARTETE AUSNAHME AUF TOP-LEVEL:

Wenn diese Überprüfungen in Ordnung sind, geben Sie unten an.

Support-v4 muss nicht als Abhängigkeit Ihres Moduls angegeben werden, da die ViewPagerIndicator-Bibliothek bereits support-v4 als Abhängigkeit hat. Sie können also versuchen, das zu entfernen und mit Gradle zu synchronisieren, indem Sie die kleine, hübsche Gradle-Schaltfläche in der Symbolleiste verwenden.

Geben Sie hier die Bildbeschreibung ein

Aktualisieren Sie Ihre Frage, wenn bei der Synchronisierung ein Fehler auftritt.

AKTUALISIERT :

Ich bin nicht sicher, aber es könnte ein Problem sein, dass ich keine ViewPagerIndicator-Bibliothek gefunden habe, die auf gradle basiert. JackWarton hat Actionbarsherlock in Gradle verschoben, ViewPagerIndicator verwendet jedoch weiterhin Maven.

pyus13
quelle
Danke, @ pyus13. Ja, diese Schaltfläche zum Synchronisieren von Projekten ist mein erster Schritt beim Hinzufügen einer neuen Abhängigkeit. Das war nicht das Problem. Ich habe meine Frage aktualisiert.
Loeschg
@loeschg Ich habe nicht gefunden, dass Jackwarton Viewpagerindicator in Gradle verschoben hat. Es könnte ein Problem sein.
Pyus13
0

Sie können die ViewPagerIndicator-Bibliothek einfach wie hier beschrieben direkt in Ihre Anwendung aufnehmen

Sie können die ViewPagerIndicator-Bibliothek als "vorhandenes Projekt" in Ihr aktuelles Projekt importieren.

Babatunde Adeyemi
quelle
0

Für mich hat auch keine der oben genannten Lösungen funktioniert. Aber das hat bei mir funktioniert.

  1. Fügen Sie einfach die erforderliche Bibliothek von hier Viewpagerindicator Library hinzu

  2. Fügen Sie dies in das build.gradle Ihres App-Moduls ein (Sie haben dort kein Repository, fügen Sie es einfach über den Abhängigkeiten ein.

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. Fügen Sie dies zu Ihren Abhängigkeiten hinzu.

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

Uday Ramjiyani
quelle
0

Zusammenfassend: Sie können "ViewPagerIndicator" in http://mvnrepository.com/ suchen. Sie werden feststellen, dass der ursprüngliche com.viewpagerindicator nicht die rote Markierung "Android Packages" enthält und Sie ihn daher nicht mit Gradle verwenden können. Sie können eine andere mit der roten Markierung finden. Stellen Sie sicher, dass sie dieselbe Version wie die ursprüngliche hat. (dh jemand erstellt ein Android-Paket basierend auf dem Original)

cn123h
quelle
0

Es gibt ein Problem mit neueren Gradle. Ändern Sie einfach die Abhängigkeit wie unten.

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Rajan Kashiyani
quelle