Utilisation de la bibliothèque ViewPagerIndicator avec Android Studio et Gradle

118

J'essaie d'utiliser la bibliothèque ViewPagerIndicator de Jake Wharton , mais je ne parviens pas à la faire fonctionner avec mon projet Gradle dans Android Studio.

Je l'ajoute en tant que dépendance comme ceci:

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

mais le projet ne semble pas reconnaître les composants de la bibliothèque. Je me demande s'il y a un problème de dépendance avec différentes versions de support-v4 ou quelque chose dans nineoldandroids ...?

loeschg
la source

Réponses:

199

Je viens de pousser une version dans maven central, il vous suffit donc d'ajouter cette dépendance:

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

Et déclarez maven central comme ceci:

repositories {
    mavenCentral()
}

J'espère que ça aide...

avianey
la source
4
Je vous remercie. Je ne voulais pas ajouter de référentiel maven aléatoire à mon script de construction. C'est beaucoup mieux.
Greg Ennis
J'ai ajouté ladite dépendance mais elle ne parvient pas à la résoudre lors de la construction gradle. Erreur exacte: Failed to resolve: fr.avianey.com.viewpagerindicator:library:2.4.1 une raison pour laquelle?
rockydgeekgod
avez-vous ajouté le référentiel dans la bonne section ... Je veux dire pas dans les référentiels de plugins ...
avianey
Je l'ai ajouté dans la dependencysection du build.gradlefichier de module individuel . Ici
rockydgeekgod
2
fr.avianey.com.viewpagerindicator: bibliothèque: 2.4.1@aar - il vous manque le @aar
Mark
147

Un peu tard à la fête, mais ici:

Jake Wharton ne l'a pas publié en maven en tant qu'aar. Il existe un groupe qui en a rendu une partie disponible via son serveur, vous pouvez le configurer comme ceci dans votre build.gradle:

Ajoutez ceci à vos référentiels sources après avoir déclaré vos plugins:

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

Cela fournira leur maven repo, qui contient un aar packagé qu'ils ont assemblé. Une fois que cela est fait, vous pouvez simplement ajouter cette ligne à vos dépendances et tout devrait fonctionner une fois que vous avez synchronisé votre projet avec vos fichiers gradle.

Assurez-vous que le Maven Repo est répertorié au-dessus de l' mavenCentral()entrée. Sinon, il cherchera d'abord dans le référentiel central de maven et trouvera le mauvais paquet.

Android Studio génère deux build.gradlefichiers pour les projets, assurez-vous de les mettre dans le bon!

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

Nous l'utilisons dans notre application si vous souhaitez voir un exemple fonctionnel:

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

Zac Sweers
la source
5
Merci! Je voulais juste faire remarquer que le dépôt bintray doit être au-dessus de mavenCentral (). Vous pouvez lire ceci: blog.haunted-soft.com/2013/10/…
Ferran Maylinch
5
Cela ne semble plus fonctionner - j'ai suivi les étapes et lorsque le studio Android actualise le projet, j'obtiens "L'actualisation du projet Gradle 'XYZ' a échoué: Artifact 'com.viewpagerindicator: library: 2.4.1: library.aar' introuvable.
Luke Sleeman
30
Après beaucoup de travail, j'ai trouvé des versions récentes d'Android Studio produisant des projets avec deux fichiers gradle - un à l'intérieur de app / build.gradle et un à /build.gradel - celui du répertoire racine est l'endroit où vous pouvez ajouter des options de configuration communes à tous les sous-projets / modules. Vous devez mettre: allprojects {repositories {maven {url " dl.bintray.com/populov/maven "} mavenCentral ()}} dans le build.gradle de niveau supérieur pour que cela fonctionne
Luke Sleeman
67
attention maintenant la dépendance est compile 'com.viewpagerindicator: library: 2.4.1' [référence:] mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1
Ricardo Pessoa
4
@OlegVaskevich vous essayez de compiler la mauvaise bibliothèque. Vous devez utiliser l'aar dans le repo bintray spécifié dans la réponse ci-dessus. Il y a pas mal d'informations erronées dans ce fil de discussion qui ne sont pas aidées par des personnes qui apportent de mauvaises modifications à ma réponse.
Zac Sweers
56

J'utilise gradle 0.10. + Avec Android Studio 0.8.2 et la réponse acceptée n'a pas fonctionné pour moi. Voici les légers changements que j'ai dû faire pour que l'ABS fonctionne dans mon projet:

Dans le build.gradlefichier de niveau supérieur de votre projet, ajoutez le référentiel maven dans la allprojectsconfiguration comme ceci:

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

Et dans le build.gradlefichier du module, ajoutez la dépendance sans le @aar:

dependencies {
   // ...
   compile 'com.viewpagerindicator:library:2.4.1'
   // ...
}
mugiwarapy
la source
Notez également que si vous utilisez la bibliothèque de support ailleurs et l'avez ajoutée à vos dépendances, vous pourriez obtenir une erreur étrange car viewpager apporte également sa propre version de support v4. reportez-vous à ce lien - stackoverflow.com/questions/20989317/…
trippedout
49

Jitpack.io est idéal pour cette situation.

Tout d'abord, ajoutez le référentiel suivant:

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

Ensuite, ajoutez simplement la dépendance pointant vers le dépôt GitHub:

dependencies {
    compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1@aar'
}
Juan Andrés Diana
la source
J'ai sauvé la journée merci :) Je posterai votre réponse ailleurs stackoverflow.com/questions/25702884/… .
Muhammad
@Juan Andres - Est-ce que ça va si je passe seulement le grade?
RoCk RoCk
26

Ajoutez ceci à vos dépendances dans le fichier build.gradle de votre module d'application comme ceci:

dependencies {
   compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
   ...
}
Md Yusuf Alam
la source
1
Idd c'est la bonne façon de le faire. Puisqu'il va directement au projet source sur GitHub, en ignorant les sites tiers.
user2408952
8

J'ai fait le truc en suivant ça. Pas besoin d'importer de bibliothèque ou rien. Juste deux étapes et bingo, cela fonctionne parfaitement.

Dans build.gradle (Projet: ...):

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

Dans build.gradle (Module: app):

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

Je n'ai pas réussi à importer le projet avec aucune des réponses. J'utilise Android Studio 0.8.6 et gradle 1.12.

La seule solution que j'ai trouvée était de télécharger la bibliothèque .aar à partir de:

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

puis importez la bibliothèque dans gradle comme ceci:

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

J'espère que cela t'aides!

Vrunoa
la source
2
Juste pour clarifier, library-2.4.1.aardoit être placé dans le libsrépertoire de votre module , que vous devez créer s'il n'existe pas déjà.
Sam
4

J'utilise Studio 0.8.6 et Gradle 1.12

Une différence dans mon projet pourrait avoir été que j'utilise également les bibliothèques de compatibilité qui ont fait se plaindre gradle d'avoir la bibliothèque support-v4deux fois.

J'ai donc dû exclure le déjà inclus support-v4comme ceci:

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

Ensuite, il s'est également plaint d'avoir le AndroidManifest.xmlfichier deux fois.

J'ai donc également ajouté exclude 'AndroidManifest.xml'dans la androidsection comme ceci:

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

Ensuite, cela a fonctionné.

Jens
la source
ne fonctionne pas: Erreur: Empaquetage pour la dépendance com.viewpagerindicator: library: 2.4.1 est «apklib» et n'est pas pris en charge. Seules les bibliothèques 'aar' sont prises en charge.
Govinda Paliwal
3

s'il vous plaît assurez-vous que support: support-v4 est le même dans toutes les bibliothèques et dans votre application, parfois cela pose problème, alors utilisez le même support: support-v4 à travers les bibliothèques et votre projet d'application.

Jitesh Upadhyay
la source
Ouais, c'est une possibilité. Une demande d'extraction est ouverte pour mettre à jour la bibliothèque de support v4 ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ). Il ne semble pas que ce projet soit activement maintenu ... :(
loeschg
Hé, mais ViewPagerInidicator est une bibliothèque Android. Cela signifie que s'ils utilisent maven, il s'agit probablement d'un artefact apklib et que gradle ne fonctionne qu'avec un artefact de guerre
Eugen Martynov
3

Le message marqué comme réponse n'a pas fonctionné pour moi ... Gradle s'est plaint de "Connexion refusée".

Considérant qu'il semble stable après tout ce temps, je viens de télécharger le fichier aar à partir de https://bintray.com/populov/maven/com.viewpagerindicator:library , copié dans mon dossier libs, et je l'ai référencé comme suit:

dependencies {
...
compile 'com.viewpagerindicator:library:2.4.1@aar'
}
devguy
la source
C'est étrange. Je viens d'utiliser la même méthode pour l'ajouter à un autre projet plus tôt cette semaine et cela fonctionne toujours bien pour moi: /
Zac Sweers
1
Ce n'est plus un conseil correct, car le suffixe @aar n'est plus nécessaire.
John Hamelink le
4
Cela n'a pas fonctionné pour moi; obtenu 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

C'est ce qui a fonctionné pour moi:

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

c'est-à-dire, n'utilisez pas l'URL du dépôt.

puis utilisez:

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

Essayez également de mettre le référentiel maven avant les autres.

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

Et construisez avec des dépendances:

  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
la source
2

Par souci de variété, voici une réponse qui n'utilise pas maven:

  1. Téléchargez zip / tgz depuis ViewPagerIndicator

  2. Dans la fenêtre du projet, sélectionnez la navigation du projet.

  3. Accédez au projet> Nouveau> Module.

  4. Importer le projet Gradle

  5. Recherchez et sélectionnez le dossier de bibliothèque décompressé. Nommez le module comme vous le souhaitez. Je l'ai nomméviewPagerIndicator

  6. Continuez à cliquer sur suivant jusqu'à ce que vous atteigniez la dernière fenêtre où il Finishest possible de cliquer. Si vous recevez le Android Support Library is not installedmessage, ne vous inquiétez pas. Allez-y et cliquez Finish.

  7. Attendez la fin de la compilation de gradle et de la compilation du projet. Une fois terminé, ajoutez ceci aux dépendances {..} dans build.gradle (Module:app):

     compile project(':viewPagerIndicator')

La bibliothèque est maintenant disponible pour votre usage.

Flamme d'udun
la source
0

Veuillez vérifier ceci en premier

Android Studio - EXCEPTION DE HAUT NIVEAU INATTENDUE:

si ces vérifications sont correctes, veuillez le mentionner ci-dessous.

Pas besoin d'inclure support-v4 comme dépendance de votre module car la bibliothèque ViewPagerIndicator a déjà support-v4 comme dépendance. Vous pouvez donc essayer de supprimer cela et de synchroniser avec gradle en utilisant le petit bouton de gradle disponible dans la barre d'outils -

entrez la description de l'image ici

Mettez à jour votre question si vous rencontrez une erreur de synchronisation.

ACTUALISÉ :

Je ne suis pas sûr mais c'est peut-être un problème, je n'ai trouvé aucune bibliothèque ViewPagerIndicator basée sur gradle. JackWarton a déplacé actionbarsherlock dans gradle mais ViewPagerIndicator utilise toujours maven.

pyus13
la source
Merci, @ pyus13. Oui, ce bouton de projet de synchronisation est ma première étape lors de l'ajout d'une nouvelle dépendance. Ce n'était pas le problème. J'ai mis à jour ma question.
loeschg
@loeschg je n'ai pas trouvé que jackwarton avait déplacé viewpagerindicator dans gradle. Cela peut être un problème.
pyus13
0

Vous pouvez simplement inclure la bibliothèque ViewPagerIndicator directement dans votre application comme décrit ici

Il vous permet d'importer la bibliothèque ViewPagerIndicator en tant que «Projet existant» dans votre projet actuel.

Babatunde Adeyemi
la source
0

Pour moi aussi, aucune des solutions ci-dessus n'a fonctionné. Mais cela a fonctionné pour moi.

  1. Incluez simplement la librabry requise à partir d'ici Viewpagerindicator Library

  2. Incluez-le dans build.gradle de votre module d'application (vous n'aurez pas de référentiel ici, incluez-le simplement au-dessus des dépendances.

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. ajoutez ceci dans vos dépendances.

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

Uday Ramjiyani
la source
0

Pour résumer: vous pouvez rechercher "ViewPagerIndicator" dans http://mvnrepository.com/ , vous découvrirez que le com.viewpagerindicator original n'a pas le marqueur rouge "Android Packages", vous ne pouvez donc pas l'utiliser avec Gradle. Vous pouvez en trouver un autre avec le marqueur rouge, assurez-vous qu'il a la même version que l'original. (c'est-à-dire que quelqu'un crée un package Android basé sur l'original)

cn123h
la source
0

Il a un problème de grade plus récent. Changez simplement de dépendance comme ci-dessous.

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Rajan Kashiyani
la source