java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
UIテストを実行しようとしたらエラー・・・
ひとまずRun with --stacktrace
を押してみる。
... Caused by: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$8.updateIndex(DexMerger.java:565) at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:276) at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:574) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:166) at com.android.dx.merge.DexMerger.merge(DexMerger.java:198) at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61) ... 1 more
これはいわゆる65536メソッド問題のようです。
UIテスト周りのbuild.gradle
を見直したところ以下は消せそうだったので消し、hamcrest-libraryのメソッドはorg.hamcrest.CoreMatchers
のメソッドに置き換えました。
testImplementation 'org.hamcrest:hamcrest-library:1.3' uiTestImplementation 'com.android.support:support-annotations:25.3.1' uiTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'
これでメソッド数が減ってUIテストが実行できるようになりました(なんでExpressoのテストないのに入れてたんだろ)