自从我买了一台新笔记本电脑以来,我去年一直工作的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出现,那么就会严重搞砸。我只是不知道如何找到原因。
同样,这在我的旧电脑上工作得很好,所以不管它是什么,都必须与环境有关。
答案 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
文件。