Використання бібліотеки ViewPagerIndicator з Android Studio та Gradle


118

Я намагаюся використовувати бібліотеку ViewPagerIndicator Jake Wharton , але я не можу змусити його працювати з моїм проектом 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'
       // ...
    }

але, здається, проект не розпізнає жодних компонентів у бібліотеці. Мені цікаво, чи існує проблема залежності з різними версіями support-v4 або чимось у дев'яти альдандроїдах ...?

Відповіді:


199

Я тільки штовхнув версію всередині Maven central, тому вам потрібно лише додати цю залежність:

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

І оголосити Мейвен центральним так:

repositories {
    mavenCentral()
}

Сподіваюся, це допомагає ...


4
Дякую. Я не хотів додати якийсь випадковий сховище Maven до свого сценарію збирання. Це набагато краще.
Грег Енніс

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

ви додали сховище в правильному розділі ... я маю на увазі не в сховищах плагінів ...
avianey

Я додав його у dependencyрозділ у build.gradleфайлі окремого модуля . Тут
rockydgeekgod

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 repo, який містить упакований ар, який вони складають разом. Після цього ви можете просто додати цю лінію до своїх залежностей, і все повинно працювати, як тільки ви синхронізуєте проект з файлами 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
Дякую! Просто хотів зауважити, що репо-бінт повинен бути вище mavenCentral (). Ви можете прочитати це: blog.haunted-soft.com/2013/10/…
Ferran Maylinch

5
Здається, це більше не працює - я виконував кроки, і коли android studio оновлює проект, я отримую програму "Gradle 'XYZ", оновлення проекту не вдалося: Artifact' com.viewpagerindicator: library: 2.4.1: library.aar 'not found.
Luke Sleeman

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

67
увагу тепер залежність компілюється 'com.viewpagerindicator: library: 2.4.1' [посилання:] mvnrepository.com/artifact/com.viewpagerindicator/library/2.4.1
Рікардо Пессоа,

4
@OlegVaskevich ви намагаєтеся скласти неправильну бібліотеку. Потрібно використовувати aar у репортажі, який вказано у відповіді вище. У цій темі є досить дезінформація, не допомагаючи людям, які погано редагують мою відповідь.
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 / ...
trippedout

49

Jitpack.io є великим для цієї ситуації.

Спочатку додайте наступне сховище:

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

Потім просто додайте залежність, що вказує на репортаж GitHub:

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

Збережено в день спасибі :) я викладу свою відповідь де - то ще stackoverflow.com/questions/25702884 / ... .
Мухаммед

@Juan Andres - Це нормально, якщо я візьму лише градус?
RoCk RoCk

26

Додайте це до залежностей у файлі build.gradle модуля додатка так:

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

1
Idd це правильний спосіб зробити це. Оскільки він переходить безпосередньо до вихідного проекту на GitHub, пропускаючи сайти третіх сторін.
користувач2408952

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-v4 однакова у всіх контурах і вашому додатку, колись це спричиняє проблеми, тому використовуйте таку ж підтримку: support-v4 через libs та ваш проект програми.


Так, така можливість. Відкритий запит на оновлення бібліотеки підтримки v4 ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ). Не схоже, що цей проект активно підтримується ... :(
loeschg

Привіт, але ViewPagerInidicator - це Android-бібліотека. Це означає, що якщо вони використовують maven, то, швидше за все, це артефакт apklib, а градель працює лише з артефактом війни
Євген Мартинов

3

Повідомлення, позначене як відповідь, для мене не спрацювало ... Gradle поскаржився на "Підключення відмовлено".

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

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

Це дивно. Я просто використав той самий метод, щоб додати його до іншого проекту на початку цього тижня, і він все ще працює для мене добре: /
Zac Sweers

1
Це вже не правильна порада, оскільки суфікс @aar більше не потрібен.
Джон Гамелінк

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 вже має підтримку-v4 як свою залежність. Тож ви можете спробувати видалити це та синхронізувати з gradle за допомогою крихітної прекрасної кнопки gradle, доступної на панелі інструментів -

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

Оновіть своє запитання, якщо виникає помилка синхронізації.

ОНОВЛЕНО:

Я не впевнений, але це може бути проблема, що я не знайшов жодної бібліотеки ViewPagerIndicator на основі gradle. JackWarton перемістив панель дій у ступінь, але ViewPagerIndicator все ще використовує maven.


Дякую, @ pyus13. Так, ця кнопка проекту синхронізації - мій перший крок при додаванні нової залежності. Це не було проблемою. Я оновив своє запитання.
loeschg

@loeschg Я не виявив, що jackwarton перемістив viewpagerindicator у gradle. Це може бути проблема.
pyus13

0

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

Це дозволяє імпортувати бібліотеку ViewPagerIndicator як "існуючий проект" до вашого поточного проекту.


0

Для мене також жодне з перерахованих вище рішень не спрацювало. Але це працювало для мене.

  1. Просто включіть потрібну бібліотеку звідси Бібліотека Viewpagerindicator

  2. Включіть це в build.gradle модуля додатка (там не будете мати сховища, просто включіть його вище залежностей.

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. додайте це до своїх залежностей.

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


0

Підводячи підсумок: ви можете шукати "ViewPagerIndicator" на веб-сайті http://mvnrepository.com/ , ви дізнаєтесь, що в оригінальному com.viewpagerindicator немає червоного маркера "Пакети Android", тому ви не можете використовувати його з Gradle. Ви можете знайти ще один із червоним маркером, переконайтесь, що він має таку ж версію, що і оригінальний. (тобто деякі створюють пакет Android на основі оригіналу)


0

У ньому є питання про новіші студії. Просто змініть залежність, як нижче.

implementation 'com.inkapplications.viewpageindicator:library:2.4.3'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.