การใช้ไลบรารี 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 ที่แตกต่างกันหรือบางอย่างใน Nineoldandroids ... ?

คำตอบ:


199

ฉันเพิ่งผลักดันเวอร์ชันภายใน maven central ดังนั้นคุณต้องเพิ่มการอ้างอิงนั้นเท่านั้น:

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

และประกาศ maven กลางดังนี้:

repositories {
    mavenCentral()
}

หวังว่ามันจะช่วย ...


4
ขอบคุณ. ฉันไม่ต้องการเพิ่มที่เก็บ maven แบบสุ่มในบิลด์สคริปต์ของฉัน ดีกว่านี้มาก.
Greg Ennis

ฉันเพิ่มการอ้างอิงดังกล่าว แต่ไม่สามารถแก้ไขได้ในการสร้างแบบไล่ระดับ ข้อผิดพลาดที่แน่นอน: 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
Mark

147

สายไปหน่อย แต่ที่นี่:

Jake Wharton ไม่ได้เปิดตัวใน maven ในฐานะ aar แม้ว่าจะมีกลุ่มหนึ่งที่ทำให้มันพร้อมใช้งานผ่านเซิร์ฟเวอร์ของพวกเขาคุณสามารถตั้งค่าแบบนี้ใน build.gradle ของคุณ:

เพิ่มสิ่งนี้ลงในที่เก็บซอร์สของคุณหลังจากที่คุณประกาศปลั๊กอินของคุณ:

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

สิ่งนี้จะเป็นแหล่ง repo 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
ขอบคุณ! แค่อยากจะตั้งข้อสังเกตว่า repo bintray ต้องอยู่เหนือ mavenCentral () สามารถอ่านได้ที่: blog.haunted-soft.com/2013/10/…
Ferran Maylinch

5
ดูเหมือนจะไม่ได้ผลอีกต่อไป - ฉันทำตามขั้นตอนและเมื่อ android studio รีเฟรชโปรเจ็กต์ฉันได้รับการรีเฟรชโปรเจ็กต์ "Gradle 'XYZ' ล้มเหลว: Artifact 'com.viewpagerindicator: library: 2.4.1: library.aar' ไม่พบ
ลุค Sleeman

30
หลังจากที่มีการโกงมากมายฉันได้พบเวอร์ชันล่าสุดของ android studio สร้างโครงการที่มีไฟล์ gradle สองไฟล์ - หนึ่งไฟล์อยู่ใน app / build.gradle และอีกไฟล์หนึ่งที่ /build.gradel ซึ่งเป็นที่ที่คุณสามารถเพิ่มตัวเลือกการกำหนดค่าทั่วไปได้ ไปยังโครงการย่อย / โมดูลทั้งหมด คุณต้องใส่: allprojects {ที่เก็บ {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
Ricardo Pessoa

4
@OlegVaskevich คุณกำลังพยายามรวบรวมไลบรารีที่ไม่ถูกต้อง คุณต้องใช้ aar ใน bintray repo ที่ระบุไว้ในคำตอบด้านบน มีข้อมูลที่ผิดอยู่พอสมควรในชุดข้อความนี้ไม่ได้รับความช่วยเหลือจากผู้ที่แก้ไขคำตอบของฉันไม่ดี
Zac Sweers

56

ฉันใช้ gradle 0.10 + กับ Android Studio 0.8.2 และคำตอบที่ยอมรับไม่ได้ผลสำหรับฉัน นี่คือการเปลี่ยนแปลงเล็กน้อยที่ฉันต้องทำเพื่อให้ ABS ทำงานในโครงการของฉัน:

ในbuild.gradleไฟล์ระดับบนสุดของโปรเจ็กต์ของคุณให้เพิ่มที่เก็บ maven ในallprojectsconfig ดังนี้:

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

จากนั้นเพิ่มการอ้างอิงที่ชี้ไปที่ repo 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 จึงข้ามไซต์ของบุคคลที่ 3 ไป
user2408952

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 lib สองครั้ง

ดังนั้นฉันจึงต้องยกเว้นสิ่งที่รวมอยู่แล้ว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' เท่านั้น
Govinda Paliwal

3

โปรดตรวจสอบให้แน่ใจว่าการสนับสนุน: support-v4 นั้นเหมือนกันใน libs และแอปพลิเคชันของคุณทั้งหมดบางครั้งก็ทำให้เกิดปัญหาดังนั้นให้ใช้การสนับสนุนเดียวกัน: support-v4 ข้าม libs และโครงการแอปของคุณ


ใช่นี่เป็นไปได้ มีคำขอดึงเพื่ออัปเดตไลบรารีการสนับสนุน v4 ( github.com/JakeWharton/Android-ViewPagerIndicator/pull/271 ) ดูเหมือนโครงการนี้จะไม่ได้รับการดูแลอย่างจริงจัง ... :(
loeschg

เฮ้ แต่ ViewPagerInidicator เป็นห้องสมุด Android หมายความว่าถ้าพวกเขาใช้ maven แสดงว่า apklib artefact และ gradle ใช้งานได้กับสิ่งประดิษฐ์สงครามเท่านั้น
Eugen Martynov

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 อีกต่อไป
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()
}

กล่าวคืออย่าใช้ repo 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 repository ก่อนคนอื่นด้วย

 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. เพียงรวม librabry ที่จำเป็นจากที่นี่ Viewpagerindicator Library

  2. รวมสิ่งนี้ไว้ใน build.gradle ของโมดูลแอปของคุณ (คุณจะไม่มีที่เก็บเพียงแค่รวมไว้ด้านบนการอ้างอิง

repositories {
    flatDir{
        dirs 'libs'
    }
}

  1. เพิ่มสิ่งนี้ลงในการอ้างอิงของคุณ

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


0

สรุป: คุณสามารถค้นหา "ViewPagerIndicator" ในhttp://mvnrepository.com/คุณจะพบว่า com.viewpagerindicator ดั้งเดิมไม่มีเครื่องหมาย "Android Packages" สีแดงดังนั้นคุณจึงไม่สามารถใช้กับ Gradle ได้ คุณสามารถค้นหาอีกอันหนึ่งที่มีเครื่องหมายสีแดงตรวจสอบให้แน่ใจว่ามีเวอร์ชันเดียวกับต้นฉบับ (เช่นบางคนสร้างแพคเกจ Android ตามต้นฉบับ)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.