AndroidStudio中包衝突問題(使用解析和Multidex重複條目)
以這個錯誤
Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-oracle/bin/java'' finished with non-zero exit value 2
和
Error: Execution failed for task ': app: packageAllDebugClassesForMultiDex'. > Java.util.zip.ZipException: duplicate entry: bolts / AggregateException.class
這兩個錯誤為例做講解
首先出現
Error:Execution failed for task
':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/usr/lib/jvm/java-7-oracle/bin/java'' finished with non-zero exit value 2
這個問題就是因為引入jar包的衝突,這時我們可以在build.gradle中新增如下程式碼,下方單獨的是新增的程式碼
defaultConfig {
applicationId ""
minSdkVersion 14
targetSdkVersion 21
versionCode 19
versionName "1.2.7"
// dex突破65535的限制
multiDexEnabled true
}
multiDexEnabled true
並引入如下包
dependencies { // 編譯libs目錄下的所有jar包 compile fileTree(dir: 'libs', include: ['*.jar']) //使用multidex support library讓Android5.0之前的版本也能在一個apk裡面包含多個.dex檔案,防止一個.dex超過65536個方法數 compile 'com.facebook.fresco:fresc' compile 'com.android.support:multidex:1.0.1' }
compile 'com.android.support:multidex:1.0.1'
這時候我們在run app,
發現又會出現這個錯誤
Error: Execution failed for task ': app: packageAllDebugClassesForMultiDex'. > Java.util.zip.ZipException:
duplicate entry: bolts / AggregateException.class
這時候不要著急,我們仔細看看,發現提示blots/AggregateException.class,這就說明是這裡引入重複,那麼我們如果在libs下沒有發現從external library看看,
這時候從external library中發現了以下包
這個和引入的jar包中有衝突,所以我們要去掉這裡,所以找到來源,發現是引入這個才引入的bolts
所以這時候重點來了,我們需要將
compile'com.facebook.fresco:fresco:0.6.0+'
改成這樣
compile('com.facebook.fresco:fresco:0.6.0+') {
exclude group: 'com.parse.bolts',
module: 'bolts-android'
}
該完之後再次run app
恭喜您,執行成功