1. 程式人生 > >AndroidStudio中包衝突問題(使用解析和Multidex重複條目)

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

恭喜您,執行成功