com.android.dex.DexException:多个dex文件定义Ledu / hawhamburg / vuforia / BuildConfig;

时间:2018-01-15 14:51:24

标签: android android-studio gradle dex

自从我买了一台新笔记本电脑以来,我去年一直工作的Android项目一直没有用,我只是不知道该怎么办。

项目本身包含五个子项目,这些子项目包含在 settings.gradle 文件中。

Gradle tasks [:app:assembleDebug]
Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Ledu/hawhamburg/vuforia/BuildConfig;
com.android.dex.DexException: Multiple dex files define Ledu/hawhamburg/vuforia/BuildConfig;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
    at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
    at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
    at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Ledu/hawhamburg/vuforia/BuildConfig;
BUILD FAILED in 12s
15 errors
0 warnings

我尝试过的事情:更新Gradle,更新Android Studio,清理项目,重新克隆gitlab项目,删除Gradle缓存,以及:

android {
    dexOptions {
        preDexLibraries = false
    }
}

如果明确禁用pre-dexing并不能阻止DexException出现,那么就会严重搞砸。我只是不知道如何找到原因。

同样,这在我的旧电脑上工作得很好,所以不管它是什么,都必须与环境有关。

1 个答案:

答案 0 :(得分:3)

我认为您的项目有一些Android库吗?如果是,则所有AndroidManifest.xml文件必须在package代码中具有不同的manifest属性。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="<<DIFFERENT VALUE HERE>>">
    <application>
...

顺便说一下,在更改之后,您必须手动删除库的build目录。 clean不会删除旧的BuildConfig文件。