2017-05-19 20 views
1

我已經設置MultiDex,但似乎沒有在我的情況下工作,我可能會丟失什麼?有一些應用程序相同的設置,在那裏工作。如何正確地啓用android中的multiDex

此外,我正在使用新的Android Studio 3.0 Canary 1,如果這可能會有影響。

清單

<application 
     android:name=".Global" 
     android:largeHeap="true" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 

搖籃

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 25 
     multiDexEnabled true 
     useLibrary 'org.apache.http.legacy' 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 


} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    ... 
    compile 'com.android.support:multidex:1.0.1' 

} 

應用程序類

public class Global extends MultiDexApplication { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     MultiDex.install(this); 
    } 
} 

個ERRORS

Error:Error converting bytecode to dex: 
Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzbrq; 
Error:com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzbrq; 
Error: at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:608) 
Error: at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:563) 
Error: at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:545) 
Error: at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:167) 
Error: at com.android.dx.merge.DexMerger.merge(DexMerger.java:194) 
Error: at com.android.builder.dexing.DexArchiveMergerCallable.mergeDexes(DexArchiveMergerCallable.java:66) 
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:54) 
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:37) 
Error: at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424) 
Error: at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) 
Error: at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) 
Error: at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) 
Error: at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157) 
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'. 
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzbrq; 
+0

你曾經爲此找到過解決方案嗎?突然遇到同樣的事情。 – mttmllns

回答

0
android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     minSdkVersion 15 
     targetSdkVersion 25 
     useLibrary 'org.apache.http.legacy' 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      multiDexEnabled true 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:multidex:1.0.1' 
} 
+0

你能解釋一下你的答案嗎? – Relm

+0

只是把multiDexEnabled裏面buildTypes –

+0

這樣做,仍然是相同的錯誤。 – Relm

1

嘗試此

protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 
     MultiDex.install(this); 
    } 

MultiDex.install(本);此行中刪除從創建

+0

沒有幫助,你認爲我能檢查的其他東西? – Relm

+0

dexOptions { javaMaxHeapSize「4g」 }我認爲您需要增加堆大小gradle –

0

創建一個類

public class Multi_Dex extends Application { 
@Override 
protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    MultiDex.install(this); 
}} 

進口該庫

compile 'com.android.support:multidex:1.0.1' 

集的gradle這個multltidexenavbled真正喜歡這個

defaultConfig { 
    multiDexEnabled true 
    minSdkVersion 19 
    targetSdkVersion 25 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
} 

IM您manifiest文件中定義你的名字就像這樣

 android:name="com.pkg.Multi_Dex" 
+0

仍然會出現相同的錯誤。 – Relm

+0

粘貼錯誤msg –

+0

查看有關問題的錯誤。 – Relm

0

gradle這個文件.. official link

android { 
     compileSdkVersion 22 
     buildToolsVersion "23.0.0" 

      defaultConfig { 
       minSdkVersion 14 //lower than 14 doesn't support multidex 
       targetSdkVersion 22 

       // Enabling multidex support. 
       multiDexEnabled true 
      } 
    } 

    dependencies { 
     compile 'com.android.support:multidex:1.0.1' 
    } 

chnage您的活動。

public class YouApplication extends Application { 

    @Override 
    protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 
     MultiDex.install(this); 
    } 

} 
相關問題