readsortabletypes multiple files error dexmerger dexexception define converting cause android jar gradle dex

android - multiple - DEX falla al analizar un contenedor incluyendo BuildConfig y R usando Gradle, pero trabajó con Ant



error at com android dx merge dexmerger readsortabletypes dexmerger java 661 (2)

Creo que si reconstruyes la biblioteca y excluyes todo del directorio / gen, todo debería funcionar bien.

Estoy intentando migrar un proyecto a Android Studio / Gradle, pero tengo un problema extraño con un contenedor que funcionó bien usando Ant . Parece que R y BuildConfig están incluidos en el jar, y el nombre de su paquete se declara en mayúsculas, cuando en realidad la estructura del paquete se ha definido en minúsculas. (He cambiado el nombre del paquete para proteger el anonimato del desarrollador, espero que esté bien)

EXCEPCIÓN INESPERADA DE NIVEL SUPERIOR:
com.android.dx.cf.iface.ParseException: class name (com / companyname / UI / BuildConfig) no coincide con la ruta (com / companyname / ui / BuildConfig.class) en com.android.dx.cf.direct.DirectClassFile .parse0 (DirectClassFile.java:520) en com.android.dx.cf.direct.DirectClassFile.parse (DirectClassFile.java:406) en com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary (DirectClassFile.java:388) ) en com.android.dx.cf.direct.DirectClassFile.getMagic (DirectClassFile.java:251) en com.android.dx.command.dexer.Main.processClass (Main.java:665) en com.android.dx. command.dexer.Main.processFileBytes (Main.java:634) en com.android.dx.command.dexer.Main.access $ 600 (Main.java:78) en com.android.dx.command.dexer.Main $ 1. processFileBytes (Main.java:572) en com.android.dx.cf.direct.ClassPathOpener.processArchive (ClassPathOpener.java:284) en com.android.dx.cf.direct.ClassPathOpener.processOne (ClassPathOpener.java:166) en com.android.dx.cf.direct.ClassPathOpener.process (ClassPathOpener.java:144) en com.android. dx.command.dexer.Main.processOne (Main.java:596) en com.android.dx.command.dexer.Main.processAllFiles (Main.java:498) en com.android.dx.command.dexer.Main. runMonoDex (Main.java:264) en com.android.dx.command.dexer.Main.run (Main.java:230) en com.android.dx.command.dexer.Main.main (Main.java:199) en com.android.dx.command.Main.main (Main.java:103) ... al analizar com / companyname / ui / BuildConfig.class

Aquí están mis preguntas:

  • ¿Por qué funcionaría con Ant y no con Gradle?
  • ¿Debería considerarse esto como un defecto / error o es una decisión de diseño?
  • ¿Cómo es que no puedo encontrar a nadie más en Internet teniendo este problema con otros frascos?
  • ¿Qué consejo puedo darle al desarrollador sobre cómo corregir el problema?

Esto me sucedió cuando el nombre del paquete en Play (com.checkpoint.DocSec) era diferente del directorio local (com.checkpoint.docsec), y la insensibilidad al archivo del sistema de archivos local arruinó el proceso de construcción.

De acuerdo con esto , podría cambiar el nombre del paquete en el manifiesto a com.checkpoint.capsule.docs (en realidad no importa, siempre y cuando no sea lo mismo, distinga entre mayúsculas y minúsculas), y configure el ID de la aplicación en build.gradle a com.checkpoint.DocSec (¡muy importante para mantenerlo exactamente igual que antes!).

Esto resolvió mi problema.