Использование библиотеки ViewPagerIndicator с Android Studio и Gradle


118

Я пытаюсь использовать библиотеку ViewPagerIndicator Джейка Уортона , но мне не удается заставить ее работать с моим проектом Gradle в Android Studio.

Я добавляю это как зависимость так:

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

но похоже, что проект не распознает какие-либо компоненты в библиотеке. Мне интересно, есть ли проблема с зависимостями с разными версиями поддержки v4 или чем-то еще в девятистарых андроидах ...?

Ответы:


199

Я просто вставил версию в maven central, поэтому вам нужно только добавить эту зависимость:

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

И объявите maven центральным следующим образом:

repositories {
    mavenCentral()
}

Надеюсь, поможет...


4
Спасибо. Я не хотел добавлять какой-то случайный репозиторий maven в свой скрипт сборки. Это намного лучше.
Грег Эннис,

Я добавил указанную зависимость, но она не может разрешить ее при сборке gradle. Точная ошибка: по Failed to resolve: fr.avianey.com.viewpagerindicator:library:2.4.1 какой причине?
rockydgeekgod 07

вы добавили репозиторий в правый раздел ... Я имею в виду не в репозитории плагинов ...
avianey 08

Я добавил его в dependencyраздел в отдельном build.gradleфайле модуля . Здесь
rockydgeekgod 08

2
fr.avianey.com.viewpagerindicator: library: 2.4.1@aar - вам не хватает @aar
Марк

147

Немного поздно на вечеринку, но здесь:

Джейк Уортон не выпускал его в maven как aar. Хотя есть группа, которая сделала это доступным через свой сервер, вы можете настроить это так в своем build.gradle:

Добавьте это в свои исходные репозитории после того, как вы объявите свои плагины:

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

Это будет источником их репозитория maven, который содержит собранный ими пакет aar. Как только это будет сделано, вы можете просто добавить эту строку в свои зависимости, и все должно работать, как только вы синхронизируете свой проект с файлами Gradle.

Убедитесь, что Maven Repo указан над mavenCentral()записью. В противном случае он сначала заглянет в центральный репозиторий maven и найдет не тот пакет.

Android Studio создает два build.gradleфайла для проектов, убедитесь, что вы поместили их в правильный!

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

Мы используем его в нашем приложении, если вы хотите увидеть рабочий пример:

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


5
Спасибо! Просто хотел отметить, что репозиторий bintray должен быть выше mavenCentral (). Вы можете прочитать это: blog.haunted-soft.com/2013/10/…
Ферран Мэйлинч

5
Это больше не работает - я выполнил шаги, и когда студия Android обновила проект, я получаю сообщение «Ошибка обновления проекта Gradle 'XYZ': Artifact 'com.viewpagerindicator: library: 2.4.1: library.aar' not found.
Люк Sleeman

30
После большого количества возни я обнаружил, что последние версии android studio создают проекты с двумя файлами gradle - один внутри в app / build.gradle и один в /build.gradel - тот, который находится в корневом каталоге, где вы можете добавить общие параметры конфигурации ко всем подпроектам / модулям. Вам нужно поместить: allprojects {repositories {maven {url " dl.bintray.com/populov/maven "} mavenCentral ()}} в build.gradle верхнего уровня, чтобы он заработал
Люк Слиман

67
внимание, теперь зависимость - это compile 'com.viewpagerindicator: library: 2.4.1' [ссылка:] mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1
Рикардо Пессоа

4
@OlegVaskevich, вы пытаетесь скомпилировать не ту библиотеку. Вам нужно использовать aar в репозитории bintray, указанном в ответе выше. В этой ветке довольно много дезинформации, которой не помогают люди, которые плохо редактируют мой ответ.
Zac Sweers

56

Я использую gradle 0.10. + С Android Studio 0.8.2, и принятый ответ у меня не сработал. Вот те небольшие изменения, которые мне пришлось сделать, чтобы заставить ABS работать в моем проекте:

В build.gradleфайле верхнего уровня вашего проекта добавьте репозиторий maven в allprojectsконфигурацию следующим образом:

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

И в build.gradleфайле модуля добавьте зависимость без @aar:

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

также обратите внимание, если вы используете библиотеку поддержки в другом месте и добавили ее к своим зависимостям, вы можете получить странную ошибку, поскольку viewpager также имеет свою собственную версию поддержки v4. обратитесь к этой ссылке - stackoverflow.com/questions/20989317/…
tripout

49

Jitpack.io является большим для этой ситуации.

Сначала добавьте следующий репозиторий:

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

Затем просто добавьте зависимость, указывающую на репозиторий GitHub:

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

День спасен :) Я отправлю ваш ответ где-нибудь еще stackoverflow.com/questions/25702884/… .
Мухаммад

@ Хуан Андрес - Ничего, если я возьму только Gradle?
RoCk RoCk

26

Добавьте это к своим зависимостям в файле build.gradle вашего модуля приложения следующим образом:

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

1
Я думаю, это правильный способ сделать это. Поскольку он идет непосредственно в исходный проект на GitHub, пропуская сторонние сайты.
user2408952 07

8

Я добился цели, выполнив это. Не нужно импортировать библиотеку или ничего. Всего два шага и бинго, все работает отлично.

В build.gradle (Проект: ...):

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

В build.gradle (Модуль: приложение):

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

5

Мне не удалось импортировать проект ни с одним из ответов. Я использую Android Studio 0.8.6 и gradle 1.12.

Единственное решение, которое я придумал, - это загрузка библиотеки .aar из:

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

а затем импортируйте библиотеку в gradle следующим образом:

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

Надеюсь это поможет!


2
Чтобы уточнить, library-2.4.1.aarнеобходимо поместить его в libsкаталог вашего модуля , который вы должны создать, если он еще не существует.
Сэм

4

Я использую Studio 0.8.6 и Gradle 1.12

Разница в моем проекте могла заключаться в том, что я также использую библиотеки совместимости, из-за которых gradle жаловался на наличие библиотеки support-v4дважды.

Поэтому мне пришлось исключить уже включенные, support-v4вот так:

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

Затем он также пожаловался на то, что AndroidManifest.xmlфайл получил дважды.

Поэтому я также добавил exclude 'AndroidManifest.xml'в такой androidраздел:

android {
    packagingOptions {
        exclude 'AndroidManifest.xml'
    }

Тогда это сработало.


не работает: Ошибка: упаковка для зависимости com.viewpagerindicator: library: 2.4.1 - это apklib и не поддерживается. Поддерживаются только библиотеки aar.
Говинда Паливал,

3

Пожалуйста, убедитесь, что support: support-v4 одинаков во всех библиотеках и в вашем приложении, иногда это вызывает проблемы, поэтому используйте ту же поддержку: support-v4 для библиотек и вашего проекта приложения.


Да, это возможность. Открыт запрос на перенос для обновления библиотеки поддержки v4 ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ). Не похоже, что этот проект активно поддерживается ... :(
loeschg

Эй, но ViewPagerInidicator - это библиотека для Android. Это означает, что если они используют maven, то, скорее всего, это артефакт apklib, а gradle работает только с артефактом войны
Евгений Мартынов

3

Сообщение, помеченное как ответ, у меня не сработало ... Gradle пожаловался на "В соединении отказано".

Учитывая, что все это время он выглядит стабильным, я просто загружаю файл aar из https://bintray.com/populov/maven/com.viewpagerindicator:library , копирую в свою папку libs и ссылаюсь на него так:

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

Странно. Я просто использовал тот же метод, чтобы добавить его в другой проект ранее на этой неделе, и он по-прежнему работает у меня: /
Зак Свиерс

1
Это уже неправильный совет, поскольку суффикс @aar больше не нужен.
John Hamelink

4
У меня не получилось; получил 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.
Сэм

2

Вот что сработало для меня:

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

т.е. не использовать URL-адрес репо.

затем используйте:

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

Также попробуйте поставить репозиторий maven раньше других.

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

И построим с зависимостями:

  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

Для разнообразия вот ответ, в котором не используется maven:

  1. Загрузите zip / tgz из ViewPagerIndicator

  2. В окне проекта выберите навигацию по проекту.

  3. Перейдите в проект> Создать> Модуль.

  4. Импортировать проект Gradle

  5. Найдите и выберите распакованную папку библиотеки. Назовите модуль как хотите. Я назвал этоviewPagerIndicator

  6. Продолжайте нажимать «Далее», пока не дойдете до последнего окна, на Finishкоторое можно нажать. Если вы получили Android Support Library is not installedсообщение, не волнуйтесь. Просто продолжайте и щелкните Finish.

  7. Дождитесь завершения сборки gradle и компиляции проекта. После завершения добавьте это в зависимости {..} в build.gradle (Module:app):

     compile project(':viewPagerIndicator')

Библиотека теперь доступна для вашего использования.


0

Пожалуйста, сначала проверьте это

Android Studio - НЕОЖИДАННОЕ ИСКЛЮЧЕНИЕ ВЕРХНЕГО УРОВНЯ:

Если эти проверки в порядке, сделайте указанные ниже.

Нет необходимости включать support-v4 в качестве зависимости вашего модуля, потому что библиотека ViewPagerIndicator уже имеет в качестве зависимости support-v4. Таким образом, вы можете попытаться удалить это и выполнить синхронизацию с Gradle, используя крошечную прекрасную кнопку Gradle, доступную на панели инструментов -

введите описание изображения здесь

Обновите свой вопрос, если вы получаете какую-либо ошибку при синхронизации.

ОБНОВЛЕНО:

Я не уверен, но это может быть проблема, я не нашел библиотеки ViewPagerIndicator на основе gradle. JackWarton переместил actionbarsherlock в gradle, но ViewPagerIndicator по-прежнему использует maven.


Спасибо, @ pyus13. Да, эта кнопка синхронизации проекта - мой первый шаг при добавлении новой зависимости. Проблема была не в этом. Я обновил свой вопрос.
loeschg

@loeschg, я не обнаружил, что jackwarton переместил индикатор viewpagerindicator в gradle. Это может быть проблемой.
pyus13

0

Вы можете просто включить библиотеку ViewPagerIndicator непосредственно в свое приложение, как описано здесь.

Это позволяет вам импортировать библиотеку ViewPagerIndicator как «Существующий проект» в ваш текущий проект.


0

Для меня также не сработало ни одно из вышеперечисленных решений. Но у меня это сработало.

  1. Просто включите необходимую библиотеку отсюда Viewpagerindicator Library

  2. Включите это в build.gradle вашего модуля приложения (у вас не будет там репозитория, просто включите его выше dependencies.

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. добавьте это в свои зависимости.

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


0

Подводя итог: вы можете выполнить поиск «ViewPagerIndicator» на http://mvnrepository.com/ , вы обнаружите, что исходный com.viewpagerindicator не имеет красного маркера «Android Packages», поэтому вы не можете использовать его с Gradle. Вы можете найти еще один с красным маркером, убедитесь, что он той же версии, что и исходный. (т.е. кто-то создает пакет Android на основе исходного)


0

У него проблема с более новым градиентом. Просто измените зависимость, как показано ниже.

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.