Ao adicionar as dependências do Retrofit e do converter Jackson, o build do aplicativo passa a dar um erro na task :app:transformClassesWithDexForDebug
, no log aparece um site para ler sobre isso.
The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html
Message{kind=ERROR, text=The number of method references in a .dex file cannot exceed 64K.
Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html, sources=[Unknown source file], original message=UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:484)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:261)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:473)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:161)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)
, tool name=Optional.of(Dex)}
É estranho como estou com um erro de na minha aplicação ter mais de 64k de métodos, o que de alguma forma está relacionado com a aplicação ter dependências em excesso de acordo com o texto, sendo que as únicas dependências que eu tenho são as inseridas no curso.
Eu baixei o projeto do professor mais a diante e vi que a unica diferença entre os arquivos do gradle é que a versão do retrofit usada em aula é 2.1.0 e a minha era 2.4.0. Eu tentei fazer o downgrade e o erro persistiu.
Curiosamente o projeto do professor também da o mesmo erro aqui, será que eu deveria apagar o cache do gradle ou algo assim? Não sei como fazer isso.
Eu realizei o procedimento do site, que envolve habilitar o multidex para poder exceder o limite de 64k de métodos (o que não acho que faz sentido porque meu projeto só tem as dependências da aula).
O resultado é que a task :app:transformClassesWithDexForDebug
roda por aproximadamente 5 minutos (o cooler do meu notebook fica insano nessa hora hahaha) e então acontece um Error de falta da memória. Como se alguma coisa tivesse entrado em loop infinito no gradle.
Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded
Message{kind=ERROR, text=Uncaught translation error: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded, sources=[Unknown source file]}
Como saio desse dilema com o build do aplicativo aqui?