Introducción
Es probable que el archivo jar fuente de tu aplicación de Java contenga una gran cantidad de archivos de origen que sin usar o que solo se incluyera para unos pocos métodos. Traduce este código no alcanzado a Objective-C sobrecarga tu aplicación de iOS innecesariamente y aumentará la probabilidad de encontrar de traducción, en especial si una de tus bibliotecas de Java usa funciones no compatibles Traductor J2ObjC.
ProGuard es una herramienta de código abierto que te ayuda a reducir, ofuscar y alterar de otra forma el código de bytes Java. Opcionalmente, con un jar de código de bytes, puede imprimir un "uso" en el que se enumeran todas las clases y los métodos sin usar de tu aplicación. J2ObjC puede usar para omitir estas clases y estos métodos durante la traducción.
Puedes descargar ProGuard aquí.
Cómo configurar ProGuard
ProGuard acepta un archivo de configuración como un argumento de la línea de comandos que especifica las optimizaciones que y los informes que debe generar. Dado que J2ObjC solo necesita saber acerca del código muerto, debes inhabilitar todas las optimizaciones y los registros irrelevantes. el archivo que se pasa a J2ObjC debe constan del texto del encabezado de ProGuard y el informe de uso.
En primer lugar, asegúrate de tener un archivo jar de código de bytes para tu aplicación que corresponda al archivo jar de origen. Puedes usar el siguiente archivo de configuración, copiado del manual de ProGuard, como plantilla para producir la resultado que J2ObjC espera:
-injars app-bin.jar
-libraryjars /lib/rt.jar
-dontoptimize
-dontobfuscate
-dontpreverify
-printusage
-dontnote
-keep public class com.foo.app.Main {
public static void main(java.lang.String[]);
}
-keepclassmembers class * {
static final % *;
static final java.lang.String *;
}
Modifica este archivo de configuración para asegurarte de que ProGuard no elimine nada que no debería.
Si tu jar es una aplicación y no solo una biblioteca, especifica el método main()
como
hacer aquí debe conservar todo lo que es necesario; puedes examinar el resultado de
ProGuard como una verificación de estado.
Cómo ejecutar ProGuard
Una vez que tengas el jar de código de bytes de tu aplicación y un archivo de configuración ProGuard personalizado (llamado,
por ejemplo, usage.pg
), puedes crear un archivo de informe de uso con el siguiente comando:
java -jar proguard.jar @usage.pg > usage.log
Esto creará un archivo llamado usage.log
que enumera las clases y los métodos sin usar de tu aplicación.
Ejecución de J2ObjC con eliminación de código no muerto
Ahora que tienes el informe de uso de ProGuard, puedes habilitar la fase de eliminación de código muerto en
J2ObjC con la marca de línea de comandos --dead-code-report <file>
. La traducción de DeadCodeEliminator
utilizará el informe de uso para eliminar el código no muerto de cada archivo fuente antes de la traducción
Objective‐C.