Por lo tanto, estoy INTENTANDO para liberar algo de software, pero Proguard me está dando un dolor de cabeza.
Cuando intento exportar usando proguard, recibo muchas advertencias, es decir, "no puedo encontrar la clase referenciada"
Por ejemplo:
[2011-08-07 17:44:37 - GAME] Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
[2011-08-07 17:44:37 - GAME] Warning: there were 52 unresolved references to classes or interfaces.
[2011-08-07 17:44:37 - GAME] You may need to specify additional library jars (using '-libraryjars'),
[2011-08-07 17:44:37 - GAME] or perhaps the '-dontskipnonpubliclibraryclasses' option.
[2011-08-07 17:44:37 - GAME] java.io.IOException: Please correct the above warnings first.
[
Las advertencias parecen estar relacionadas con el marco simple, por lo que en mi archivo de configuración de protección he agregado lo siguiente:
-libraryjars pathtoprojecttolibs\simple-xml-2.4.jar
¿Dónde pathtoprojecttolibs
está el camino a los frascos a los que hace referencia mi proyecto?
Esto no hace ninguna diferencia.
Si el marco simple hace referencia a Java, ¿puedo decirle a Proguard que ignore esto también?
¿Algunas ideas?
Respuestas:
org.simpleframework.xml.stream.StreamReader
en su código se refiere ajavax.xml.stream.events.XMLEvent
. La última clase es parte del tiempo de ejecución de Java (rt.jar
) pero no del tiempo de ejecución de Android (android.jar
), por lo que ProGuard advierte que algo podría estar roto. Si está seguro de que su aplicación funciona de todos modos, puede especificarProGuard infierno?
fuente
-dontwarn javax.xml.**
-libraryjars <java.home>/lib/rt.jar
solucionó el problema para mí.-dontwarn javax.xml.stream.**
-dontwarn
cantar la GUI?En mi caso, la causa raíz estaba aquí . Esas advertencias que puedes omitir con:
La respuesta original está aquí.
fuente
Este error se produce porque las bibliotecas que utiliza dependen de otras bibliotecas que realmente no se utilizan, pero Proguard las está buscando.
Agregue sus líneas -dontwarn a su archivo proguard-rules.pro en su proyecto de Android para deshabilitar estas advertencias.
Puede encontrar qué dependencias necesita agregar a su proguard-rules.pro en el stacktrace de su error.
fuente
Debe incluir esto en su configuración de Proguard:
fuente
Mi llave mágica que resolvió mis horas de búsqueda: agregue esto a progruard-android.txt
fuente
Hmm Al leer esa advertencia, parecería que la biblioteca que está tratando de usar depende de javax.xml.stream.events. No creo que el espacio de nombres esté realmente incluido en Android en absoluto. (Ver índice del paquete ).
Intente implementarlo en el emulador sin usar proguard y vea si funciona. Mi suposición sería no si esa advertencia es precisa.
fuente
Creo que este es un caso extremo, pero en mi caso tuve que borrar por completo la carpeta de compilación en mi protector Jenkins, traté de trabajar con código antiguo que ya no estaba allí, por si alguien tiene el mismo problema.
fuente
En mi caso no he cambiado nada y la advertencia comenzó a aparecer. El problema era con los cachés de gradle rotos. Mira mi otra respuesta . Comparto esto porque me tomó 2 horas encontrar el problema:]
fuente
Agregue esta línea a su
proguard-rules.pro
archivo en el directorio de scripts de gradle:donde
package.class.name
está el nombre del paquete con el nombre de la clase del archivo jar adjunto.Por ejemplo:
fuente