สำหรับปัญหานี้อาจจะเจอกันได้เป็นบางครั้ง ซึ่งมีสาเหตุมาจากการกำหนด Dependencies เพื่อเพิ่มไลบรารีหลายตัว แล้วเกิดปัญหามีไลบรารีทับซ้อนกัน เพราะแต่ละตัวมีการใช้ไลบรารีตัวอื่นๆด้วย จึงทำให้เกิดการซ้อนกัน แล้วเกิดเออเรอร์ดังกล่าว
// build.gradle (App Module)
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.andraskindler.parallaxviewpager:parallaxviewpager:0.3.1'
compile 'com.viewpagerindicator:library:2.4.1'
compile 'com.nhaarman.listviewanimation:lib-core:3.1.0@aar'
compile 'com.nhaarman.listviewanimation:lib-manipulation:3.1.0@aar'
compile 'com.nhaarman.listviewanimation:lib-core-slg:3.1.0@aar'
}
จากตัวอย่างนี้คือเจ้าของบล็อกมีการเรียกใช้ไลบรารีอยู่หลายตัว จึงทำให้เกิดปัญหาไลบรารี Android Support v4 ทับซ้อนกัน โดยวิธีแก้ก็คือเลือกใช้แค่ตัวใดตัวหนึ่งเท่านั้น ส่วนตัวที่เหลือก็กำหนดไม่ให้คอมไพล์ Android Support v4 ดังนี้
compile ('<dependencies>') {
exclude module: 'support-v4'
}
โดย <dependencies> คือ Package ของไลบรารีที่ไม่ต้องการให้ดึงไลบรารี Android Support v4 ที่ติดมาด้วยมาคอมไพล์
// build.gradle (App Module)
...
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile 'com.andraskindler.parallaxviewpager:parallaxviewpager:0.3.1'
compile ('com.viewpagerindicator:library:2.4.1') {
exclude module: 'support-v4'
}
compile ('com.nhaarman.listviewanimation:lib-core:3.1.0@aar') {
exclude module: 'support-v4'
}
compile ('com.nhaarman.listviewanimation:lib-manipulation:3.1.0@aar') {
exclude module: 'support-v4'
}
compile ('com.nhaarman.listviewanimation:lib-core-slg:3.1.0@aar') {
exclude module: 'support-v4'
}
}
เมื่อลอง Run อีกครั้งก็จะพบว่าไม่เจอปัญหานี้แล้ว
สำหรับปัญหา Multiple dex files define หรือ Unable merge dex นั้นเป็นปัญหาสุดคลาสสิคที่นักพัฒนามือใหม่ต้องปวดหัวไปกับมัน ซึ่งในบทความนี้เป็นแค่วิธีแก้ไขแบบง่ายๆเท่านั้น สามารถอ่านเรื่องนี้เพิ่มเติมได้จากบทความ [Android Dev Tips] เมื่อเจ้าของบล็อกต้องเจอปัญหา Dependency Conflict