Utilizzo della libreria ViewPagerIndicator con Android Studio e Gradle


118

Sto cercando di utilizzare la libreria ViewPagerIndicator di Jake Wharton , ma non riesco a farlo funzionare con il mio progetto Gradle in Android Studio.

Lo aggiungo come dipendenza in questo modo:

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

ma il progetto non sembra riconoscere alcun componente nella libreria. Mi chiedo se c'è un problema di dipendenza con diverse versioni di supporto v4 o qualcosa del genere in nineoldandroids ...?

Risposte:


199

Ho appena inserito una versione all'interno di Maven Central, quindi devi solo aggiungere quella dipendenza:

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

E dichiara Maven centrale in questo modo:

repositories {
    mavenCentral()
}

Spero che sia d'aiuto...


4
Grazie. Non volevo aggiungere un repository Maven casuale al mio script di build. Questo molto meglio.
Greg Ennis

Ho aggiunto la suddetta dipendenza ma non riesce a risolverla su gradle build. Errore esatto: Failed to resolve: fr.avianey.com.viewpagerindicator:library:2.4.1 qualsiasi motivo?
rockydgeekgod

hai aggiunto il repository nella sezione a destra ... Voglio dire non nei repository dei plugin ...
avianey

L'ho aggiunto nella dependencysezione nel build.gradlefile del modulo individuale . Qui
rockydgeekgod

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

147

Un po 'tardi per la festa, ma qui:

Jake Wharton non l'ha pubblicato in Maven come aar. C'è un gruppo però che ne ha reso disponibile un aar tramite il proprio server, puoi configurarlo in questo modo nel tuo build.gradle:

Aggiungilo ai tuoi repository di origine dopo aver dichiarato i tuoi plugin:

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

Ciò fornirà il loro repository esperto, che contiene un aar confezionato che hanno messo insieme. Una volta fatto, puoi semplicemente aggiungere questa riga alle tue dipendenze e tutto dovrebbe funzionare una volta sincronizzato il tuo progetto con i tuoi file gradle.

Assicurati che il repository Maven sia elencato sopra la mavenCentral()voce. Altrimenti, prima cercherà nel repository centrale di Maven e troverà il pacchetto sbagliato.

Android Studio genera due build.gradlefile per i progetti, assicurati di inserirlo in quello giusto!

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

Lo usiamo nella nostra app se desideri vedere un esempio funzionante:

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


5
Grazie! Volevo solo sottolineare che il repository bintray deve essere sopra mavenCentral (). Puoi leggere questo: blog.haunted-soft.com/2013/10/…
Ferran Maylinch

5
Sembra che non funzioni più - Ho seguito i passaggi e quando Android Studio aggiorna il progetto ottengo "Aggiornamento progetto Gradle 'XYZ' non riuscito: Artifact 'com.viewpagerindicator: library: 2.4.1: library.aar' non trovato.
Luke Sleeman

30
Dopo un sacco di confusione ho scoperto che le versioni recenti di Android Studio producono progetti con due file gradle - uno all'interno su app / build.gradle e uno su /build.gradel - quello nella directory principale è dove puoi aggiungere opzioni di configurazione comuni a tutti i sottoprogetti / moduli. Devi mettere: allprojects {repository {maven {url " dl.bintray.com/populov/maven "} mavenCentral ()}} nel build.gradle di primo livello affinché funzioni
Luke Sleeman

67
attenzione ora la dipendenza è compilare 'com.viewpagerindicator: library: 2.4.1' [riferimento:] mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1
Ricardo Pessoa

4
@OlegVaskevich stai cercando di compilare la libreria sbagliata. È necessario utilizzare aar nel repository bintray specificato nella risposta sopra. C'è una discreta quantità di disinformazione in questo thread che non viene aiutato da persone che apportano cattive modifiche alla mia risposta.
Zac Sweers

56

Sto usando gradle 0.10. + Con Android Studio 0.8.2 e la risposta accettata non ha funzionato per me. Queste sono le piccole modifiche che ho dovuto fare per far funzionare l'ABS nel mio progetto:

Nel build.gradlefile di primo livello del tuo progetto aggiungi il repository maven nella allprojectsconfigurazione in questo modo:

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

E nel build.gradlefile del modulo aggiungi la dipendenza senza @aar:

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

Nota anche se stai usando la libreria di supporto altrove e l'hai aggiunta alle tue dipendenze, potresti ricevere uno strano errore poiché viewpager porta anche la sua versione del supporto v4. fare riferimento a questo link - stackoverflow.com/questions/20989317/...
trippedout

49

Jitpack.io è ottimo per questa situazione.

Innanzitutto, aggiungi il seguente repository:

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

Quindi, aggiungi semplicemente la dipendenza che punta al repository GitHub:

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

Salvato la giornata grazie :) Pubblicherò la tua risposta da qualche altra parte stackoverflow.com/questions/25702884/… .
Muhammad

@ Juan Andres - Va bene se prendo solo il gradle?
RoCk RoCk

26

Aggiungi questo alle tue dipendenze nel file build.gradle del modulo dell'app in questo modo:

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

1
Idd questo è il modo corretto per farlo. Dal momento che va direttamente al progetto sorgente su GitHub, saltando i siti di terze parti.
user2408952

8

Ho fatto il trucco seguendo questo. Non c'è bisogno di importare la libreria o niente. Solo due passaggi e bingo, funziona perfettamente.

In build.gradle (Progetto: ...):

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

In build.gradle (Modulo: app):

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

5

Non sono riuscito a importare il progetto con nessuna delle risposte. Uso Android Studio 0.8.6 e gradle 1.12.

L'unica soluzione che ho trovato è stata scaricare la libreria .aar da:

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

e quindi importa la libreria in gradle in questo modo:

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

Spero che questo ti aiuti!


2
Giusto per chiarire, library-2.4.1.aardeve essere messo nella libsdirectory del modulo , che dovresti creare se non esiste già.
Sam

4

Sto usando Studio 0.8.6 e Gradle 1.12

Una differenza nel mio progetto potrebbe essere stata che sto usando anche le librerie di compatibilità che hanno fatto lamentare gradle di avere la libreria support-v4due volte.

Quindi ho dovuto escludere il già incluso in support-v4questo modo:

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

Poi si è anche lamentato di avere il AndroidManifest.xmlfile due volte.

Quindi ho anche aggiunto exclude 'AndroidManifest.xml'nella androidsezione come questa:

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

Poi ha funzionato.


non funziona: errore: pacchettizzazione per dipendenza com.viewpagerindicator: libreria: 2.4.1 è "apklib" e non è supportata. Sono supportate solo le librerie "aar".
Govinda Paliwal

3

assicurati che support: support-v4 sia lo stesso in tutte le librerie e nella tua applicazione, a volte causa problemi quindi usa lo stesso supporto: support-v4 nelle librerie e nel progetto della tua app.


Sì, questa è una possibilità. È aperta una richiesta pull per aggiornare la libreria di supporto v4 ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ). Non sembra che questo progetto sia attivamente mantenuto ... :(
loeschg

Ehi, ma ViewPagerInidicator è una libreria Android. Significa che se usano Maven, molto probabilmente è un artefatto apklib e gradle funziona solo con artefatti di guerra
Eugen Martynov

3

Il post contrassegnato come risposta non ha funzionato per me ... Gradle si è lamentato di "Connessione rifiutata".

Considerando che sembra che sia stabile dopo tutto questo tempo, ho appena scaricato il file aar da https://bintray.com/populov/maven/com.viewpagerindicator:library , copiato nella mia cartella libs e l'ho fatto riferimento in questo modo:

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

È strano. Ho appena usato lo stesso metodo per aggiungerlo a un altro progetto all'inizio di questa settimana e funziona ancora bene per me: /
Zac Sweers

1
Questo non è più un consiglio corretto, poiché il suffisso @aar non è più necessario.
John Hamelink

4
Non ha funzionato per me; ottenuto 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

Questo è ciò che ha funzionato per me:

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

cioè, non utilizzare l'URL del repository.

quindi usa:

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

Prova anche a mettere il repository Maven prima degli altri.

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

E crea con le dipendenze:

  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

Per motivi di varietà ecco una risposta che non usa Maven:

  1. Scarica zip / tgz da ViewPagerIndicator

  2. Nella finestra del progetto selezionare la navigazione del progetto.

  3. Vai a progetto> Nuovo> Modulo.

  4. Importa progetto Gradle

  5. Individua e seleziona la cartella della libreria decompressa. Assegna al modulo il nome che desideri. L'ho chiamatoviewPagerIndicator

  6. Continua a fare clic su Avanti fino a raggiungere l'ultima finestra in cui Finishè possibile fare clic. Se ricevi il Android Support Library is not installedmessaggio, non preoccuparti. Basta andare avanti e fare clic Finish.

  7. Attendi il completamento della compilazione gradle e del progetto. Una volta completato, aggiungilo alle dipendenze {..} in build.gradle (Module:app):

     compile project(':viewPagerIndicator')

La libreria è ora disponibile per l'uso.


0

Per favore controlla prima questo

Android Studio - ECCEZIONE INASPETTATA DI PRIMO LIVELLO:

se questi controlli sono a posto, fare quanto indicato di seguito.

Non è necessario includere support-v4 come dipendenza del modulo perché la libreria ViewPagerIndicator ha già support-v4 come dipendenza. Quindi puoi provare a rimuoverlo e sincronizzarti con gradle usando un piccolo e adorabile pulsante gradle disponibile nella barra degli strumenti -

inserisci qui la descrizione dell'immagine

Aggiorna la tua domanda se ricevi un errore durante la sincronizzazione.

AGGIORNATO:

Non sono sicuro, ma potrebbe essere un problema non ho trovato alcuna libreria ViewPagerIndicator basata su gradle. JackWarton ha spostato actionbarsherlock in gradle ma ViewPagerIndicator utilizza ancora Maven.


Grazie, @ pyus13. Sì, quel pulsante di sincronizzazione del progetto è il mio primo passo quando si aggiunge una nuova dipendenza. Non era questo il problema. Ho aggiornato la mia domanda.
loeschg

@loeschg non ho trovato che jackwarton ha spostato viewpagerindicator in gradle. Potrebbe essere un problema.
pyus13

0

Puoi semplicemente includere la libreria ViewPagerIndicator direttamente all'interno della tua applicazione come descritto qui

Ti consente di importare la libreria ViewPagerIndicator come "Progetto esistente" nel tuo progetto corrente.


0

Anche per me nessuna delle soluzioni precedenti non ha funzionato. Ma questo ha funzionato per me.

  1. Basta includere la librabry richiesta da qui Viewpagerindicator Library

  2. Includilo nel modulo build.gradle della tua app (non avrai un repository lì includilo solo sopra le dipendenze.

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. aggiungilo alle tue dipendenze.

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


0

Per riassumere: puoi cercare "ViewPagerIndicator" in http://mvnrepository.com/ , scoprirai che l'originale com.viewpagerindicator non ha l'indicatore rosso "Pacchetti Android", quindi non puoi usarlo con Gradle. Puoi trovarne un altro con il pennarello rosso, assicurati che abbia la stessa versione dell'originale. (cioè qualcuno crea un pacchetto Android basato su quello originale)


0

Ha un'edizione di gradle più recente. Basta cambiare la dipendenza come sotto.

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.