Usando a biblioteca ViewPagerIndicator com Android Studio e Gradle


118

Estou tentando usar a biblioteca ViewPagerIndicator de Jake Wharton , mas não consigo fazê-lo funcionar com meu projeto Gradle no Android Studio.

Eu o adiciono como uma dependência assim:

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

mas o projeto parece não reconhecer nenhum componente na biblioteca. Gostaria de saber se há um problema de dependência com diferentes versões de suporte-v4 ou algo em nineoldandroids ...?

Respostas:


199

Eu acabei de enviar uma versão para dentro do maven central, então você só precisa adicionar essa dependência:

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

E declare o maven central assim:

repositories {
    mavenCentral()
}

Espero que ajude...


4
Obrigado. Eu não queria adicionar algum repositório aleatório do maven ao meu script de construção. Isso é muito melhor.
Greg Ennis

Eu adicionei a dependência mencionada, mas ela não consegue resolvê-la na construção do gradle. Erro exato: Failed to resolve: fr.avianey.com.viewpagerindicator:library:2.4.1 Qualquer motivo?
rockydgeekgod

fez você adicionar o repositório no lado direito ... Eu não quero dizer nos repositórios de plug-in ...
avianey

Eu o adicionei na dependencyseção no build.gradlearquivo de módulo individual . Aqui
rockydgeekgod

2
fr.avianey.com.viewpagerindicator: library: 2.4.1@aar - você está perdendo o @aar #
Mark #

147

Um pouco tarde para a festa, mas aqui:

Jake Wharton não o lançou em segredo como um aar. Embora haja um grupo que disponibilizou um pacote através do servidor deles, você pode configurá-lo dessa maneira em seu build.gradle:

Adicione isso aos seus repositórios de origem depois de declarar seus plugins:

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

Isso fornecerá seu repositório maven, que contém um aar empacotado que eles montam. Feito isso, você pode simplesmente adicionar essa linha às suas dependências e tudo funcionará depois que você sincronizar seu projeto com os arquivos gradle.

Verifique se o Maven Repo está listado acima do mavenCentral() entrada. Caso contrário, ele primeiro procurará no repositório central do maven e encontrará o pacote errado.

O Android Studio gera dois build.gradlearquivos para projetos. Coloque isso no caminho certo!

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

Nós o usamos em nosso aplicativo se você quiser ver um exemplo de trabalho:

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


5
Obrigado! Só queria observar que o repositório da bandeja deve estar acima de mavenCentral (). Você pode ler isto: blog.haunted-soft.com/2013/10/…
Ferran Maylinch

5
Isso não parece mais funcionar - segui as etapas e quando o android studio atualiza o projeto, recebo a atualização do projeto "Gradle 'XYZ' falhou: Artefato 'com.viewpagerindicator: library: 2.4.1: library.aar' não encontrado.
Luke Sleeman

30
Depois de muita confusão, eu encontrei versões recentes do android studio produzindo projetos com dois arquivos gradle - um dentro em app / build.gradle e outro em /build.gradel - aquele no diretório raiz é onde você pode adicionar opções de configuração comuns a todos os subprojetos / módulos. Você precisa colocar: allprojects {repositories {maven {url " dl.bintray.com/populov/maven "} mavenCentral ()}} no build.gradle de nível superior para que ele funcione
Luke Sleeman

67
atenção agora a dependência é compilada 'com.viewpagerindicator: library: 2.4.1' [reference:] mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1
Ricardo Pessoa

4
@OlegVaskevich você está tentando compilar a biblioteca errada. Você precisa usar o aar no repositório da bandeja especificado na resposta acima. Há uma quantidade razoável de informações erradas neste tópico que não está sendo ajudado por pessoas que fazem edições ruins na minha resposta.
Zac Sweers

56

Estou usando o gradle 0.10. + Com o Android Studio 0.8.2 e a resposta aceita não funcionou para mim. Estas são as pequenas alterações que eu tive que fazer para fazer o ABS funcionar no meu projeto:

No build.gradlearquivo de nível superior do seu projeto, adicione o repositório maven na allprojectsconfiguração da seguinte maneira:

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

E no build.gradlearquivo do módulo, adicione a dependência sem o @aar:

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

Observe também que, se você estiver usando a biblioteca de suporte em outro lugar e a adicionar a suas dependências, poderá receber um erro estranho, pois o viewpager também traz sua própria versão do support v4. consulte este link - stackoverflow.com/questions/20989317/…
trippedout

49

O Jitpack.io é ótimo para esta situação.

Primeiro, adicione o seguinte repositório:

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

Em seguida, adicione a dependência que aponta para o repositório do GitHub:

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

Salvei o dia obrigado :) Vou postar sua resposta em outro lugar stackoverflow.com/questions/25702884/… .
Muhammad

@ Juan Andres - Tudo bem se eu fizer apenas a graduação?
RoCk RoCk

26

Adicione isso às suas dependências no arquivo build.gradle do módulo do aplicativo da seguinte maneira:

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

1
Idd esta é a maneira correta de fazê-lo. Como ele vai diretamente para o projeto de origem no GitHub, pula sites de terceiros.
user2408952

8

Eu fiz o truque seguindo isso. Não há necessidade de importar biblioteca ou nada. Apenas dois passos e bingo, ele funciona perfeitamente.

Em build.gradle (Projeto: ...):

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

No build.gradle (Módulo: app):

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

5

Não consegui importar o projeto com nenhuma das respostas. Estou usando o Android Studio 0.8.6 e o ​​gradle 1.12.

A única solução que encontrei foi baixar a biblioteca .aar de:

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

e importe a biblioteca em gradle assim:

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

Espero que isto ajude!


2
Apenas para esclarecer, é library-2.4.1.aarpreciso colocar o libsdiretório do módulo , que você deve criar se ele ainda não existir.
Sam

4

Estou usando o Studio 0.8.6 e o ​​Gradle 1.12

Uma diferença no meu projeto pode ter sido que eu também estou usando as bibliotecas de compatibilidade que fizeram o gradle reclamar por ter a support-v4lib duas vezes.

Então eu tive que excluir o já incluído support-v4assim:

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

Em seguida, também reclamou de ter o AndroidManifest.xmlarquivo duas vezes.

Então eu também adicionei exclude 'AndroidManifest.xml'na androidseção assim:

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

Então funcionou.


não está funcionando: Erro: Empacotando a dependência com.viewpagerindicator: library: 2.4.1 é 'apklib' e não é suportado. Apenas bibliotecas 'aar' são suportadas.
Govinda Paliwal

3

verifique se support: support-v4 é o mesmo em todas as bibliotecas e no seu aplicativo; em algum momento isso causa problemas; portanto, use o mesmo suporte: support-v4 nas bibliotecas e no seu projeto de aplicativo.


Sim, isso é uma possibilidade. Há uma solicitação de recebimento aberta para atualizar a biblioteca de suporte da v4 ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ). Não parece que este projeto esteja sendo mantido ativamente ... :(
loeschg 15/01

Ei, mas ViewPagerInidicator é uma biblioteca Android. Isso significa que se eles usam maven então é mais provável artefato apklib e obras Gradle com único artefacto de guerra
Eugen Martynov

3

A postagem marcada como resposta não funcionou para mim ... Gradle reclamou de "Conexão recusada".

Considerando que parece estável depois de todo esse tempo, basta baixar o arquivo aar em https://bintray.com/populov/maven/com.viewpagerindicator:library , copiado para minha pasta libs e referenciá-lo da seguinte forma:

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

Isso é estranho. Eu apenas usei o mesmo método para adicioná-lo a outro projeto no início desta semana e ainda funciona bem para mim: /
Zac Sweers 13/14

1
Isso não é mais um conselho correto, pois o sufixo @aar não é mais necessário.
John Hamelink

4
Não funcionou para mim; tem 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

Isto é o que funcionou para mim:

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

ou seja, não use o URL do repositório.

então use:

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

Tente também colocar o repositório maven antes dos outros.

 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 construa com dependências:

  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

Por uma questão de variedade, aqui está uma resposta que não usa o maven:

  1. Faça o download do zip / tgz do ViewPagerIndicator

  2. Na janela do projeto, selecione navegação do projeto.

  3. Vá para projeto> Novo> Módulo.

  4. Import Gradle Project

  5. Procure e selecione a pasta descompactada da biblioteca. Nomeie o módulo como desejar. Eu nomeeiviewPagerIndicator

  6. Continue clicando em Avançar até chegar à última janela onde Finishé clicável. Se você receber a Android Support Library is not installedmensagem, não se preocupe. Apenas vá em frente e clique Finish.

  7. Aguarde a conclusão da compilação gradle e do projeto. Depois de concluído, adicione isso às dependências {..} em build.gradle (Module:app):

     compile project(':viewPagerIndicator')

A biblioteca está agora disponível para seu uso.


0

Por favor, verifique isso primeiro

Android Studio - EXCEÇÃO INESPERADA DE NÍVEL SUPERIOR:

se essas verificações estiverem corretas, mencione abaixo.

Não é necessário incluir o support-v4 como dependência do seu módulo, porque a biblioteca ViewPagerIndicator já possui o support-v4 como sua dependência. Assim, você pode tentar remover isso e sincronizar com o gradle usando o botão minúsculo adorável disponível na barra de ferramentas -

insira a descrição da imagem aqui

Atualize sua pergunta se estiver recebendo algum erro na sincronização.

ATUALIZADA :

Não tenho certeza, mas pode ser um problema. Não encontrei nenhuma biblioteca ViewPagerIndicator baseada em gradle. JackWarton mudou o actionbarsherlock em gradle, mas o ViewPagerIndicator ainda está usando o maven.


Obrigado, @ pyus13. Sim, esse botão de projeto de sincronização é meu primeiro passo ao adicionar uma nova dependência. Esse não era o problema. Eu atualizei minha pergunta.
loeschg

@loeschg eu não achei que jackwarton mudou viewpagerindicator em gradle. Pode ser um problema.
pyus13

0

Você pode apenas incluir a biblioteca ViewPagerIndicator diretamente no seu aplicativo, conforme descrito aqui

Ele permite importar a biblioteca ViewPagerIndicator como um "Projeto Existente" para o seu projeto atual.


0

Para mim, também qualquer uma das soluções acima não funcionou. Mas isso funcionou para mim.

  1. Basta incluir a bibliografia necessária a partir daqui Viewpagerindicator Library

  2. Inclua isso no build.gradle do seu módulo de aplicativo (você não terá repositório lá, inclua-o acima das dependências.

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. adicione isso em suas dependências.

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


0

Para resumir: você pode pesquisar "ViewPagerIndicator" em http://mvnrepository.com/ , descobrirá que o com.viewpagerindicator original não possui o marcador vermelho "Pacotes Android", portanto não pode ser usado com o Gradle. Você pode encontrar outro com o marcador vermelho, verifique se ele tem a mesma versão do original. (ou seja, alguém cria um pacote para Android com base no original)


0

Tem uma questão de gradle mais recente. Apenas mude a dependência como abaixo.

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.