java - 如何在 android 中正确启用 multiDex

标签 java android android-multidex

我已经设置了 MultiDex,但似乎无法处理我的情况,我可能遗漏了什么?在某些应用程序上有相同的设置,在那里工作。

此外,我正在使用新的 Android Studio 3.0 Canary 1,如果这可能有影响的话。

list

<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);
    }
}

错误

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;

最佳答案

试试这个

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

MultiDex.install(这个);此行从创建时删除

关于java - 如何在 android 中正确启用 multiDex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44063836/

相关文章:

java - 为什么有必要在泛型通配符中读取和 super 写入的情况下进行扩展?

java - JVMTI 获取被调用类/文件的名称

java - Android:Dex 问题(意外的顶级异常:)

java - Android linphone.jar错误:Execution failed for task ':app:dexDebug'

java - block 捕获中的丢失异常

java - 使用 HttpClient 上传视频文件

android - Google Map V21,如何以编程方式停止自动位置更新?

android - keystore 更改密码详细信息?

java - 在创建 fragment 之前调用 fragment 内的方法,抛出 NPE。我应该如何处理这个问题?

Android studio multidex 和 Ndk 问题