Eliminación del código no entregado

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.