Error converting bytecode to dex org/apache/commons/io/FileCleaner (Android Studio 3.0 Preview beta 2/3)

488 views Asked by At

Our project compiles, but I can't install it into simulator. I see other people reporting similar issues, but their solutions were to change the version number. For us, this works on other developer's machines but not mine. Is there some cache I should delete?

I have reinstalled Android Studio 3.0, deleted ~/.gradle, deleted .gradle folder inside project, restarted AS, clean folder...

Is there something specific about this being an Apache class that is the issue?

Information:Gradle tasks [:app:assembleXXX]
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/FileCleaner;
Error:com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/FileCleaner;
Error:  at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error:  at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error:  at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error:  at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error:  at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error:  at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
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:transformDexArchiveWithDexMergerForXXX'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/io/FileCleaner;

And here is the dependencies from gradle:

dependencies {
implementation 'com.google.code.gson:gson:2.8.0'
implementation 'com.google.android.gms:play-services-analytics:11.2.0'
implementation 'com.google.android.gms:play-services-gcm:11.2.0'
implementation 'com.google.android.gms:play-services-location:11.2.0'
implementation 'com.google.android.gms:play-services-maps:11.2.0'
implementation 'com.googlecode.android-query:android-query:0.25.9'
implementation 'org.apache.commons:commons-io:1.3.2'
implementation 'org.jsoup:jsoup:1.8.1'
implementation 'com.android.support:appcompat-v7:26.0.1'
implementation 'com.android.support:cardview-v7:26.0.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:26.0.1'
implementation 'com.android.support:recyclerview-v7:26.0.1'
implementation 'com.android.support:support-v4:26.0.1'
implementation 'com.android.support:support-v13:26.0.1'
implementation 'de.hdodenhof:circleimageview:2.0.0'
implementation 'io.reactivex:rxandroid:1.1.0'
implementation 'io.reactivex:rxjava:1.1.8'
implementation 'org.altbeacon:android-beacon-library:2.12.1'

}

2

There are 2 answers

0
miracula On

I've not been able to find the cause of this problem because non of my dependencies dependes on commons-io, but in my case I fixed it by using another commons-io module:

I replaced
compile 'org.apache.commons:commons-io:1.3.2'

with
compile 'commons-io:commons-io:2.5'

0
Jason Hocker On

Still not sure on the real answer, but our project works for the people that went to Android Studio 3 beta 3, and then rolled back to beta 2. Myself who never had beta 3 is the one that is broken. We tried this on a other laptops and are confident that something in our project is broken for users on beta 2 who never had beta 3. Our solution will be to wait for the next Android Studio version.