Introdução
O jar de origem do seu aplicativo Java provavelmente contém um grande número de arquivos de origem que estão totalmente não utilizado ou incluído para apenas alguns métodos. Convertendo esse código morto para Objective-C sobrecarregarão seu aplicativo iOS desnecessariamente e aumentarão a probabilidade de encontrar erros de tradução, especialmente se uma de suas bibliotecas Java usar recursos não suportados pelo Tradutor J2ObjC.
O ProGuard é uma ferramenta de código aberto que ajuda a reduzir, ofuscar e corromper o bytecode Java. Opcionalmente, com um jar de bytecode, ele pode exibir uma "uso" um relatório listando todas as classes e métodos não utilizados no seu aplicativo. O J2ObjC pode usar um relatório para pular essas classes e métodos durante a tradução.
Faça o download do ProGuard aqui.
Como configurar o ProGuard
O ProGuard aceita um arquivo de configuração como um argumento de linha de comando que especifica as otimizações que ele deve realizar e os relatórios que deve gerar. Como o J2ObjC só precisa saber sobre código morto, Desative todas as otimizações e registros irrelevantes; o arquivo passado para J2ObjC deve consistem apenas no texto do cabeçalho do ProGuard e no relatório de uso.
Primeiro, verifique se você tem um jar de bytecode para seu aplicativo que corresponda ao jar de origem. Você pode usar o seguinte arquivo de configuração, copiado do manual do ProGuard, como um modelo para produzir a que o 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 *;
}
Modifique esse arquivo de configuração para garantir que o ProGuard não elimine nada que não deva.
Se o jar for um aplicativo, e não apenas uma biblioteca, especifique o método main()
, conforme mostrado.
feito aqui deve manter tudo o que é necessário; é possível examinar a saída resultante
como uma verificação de integridade.
Como executar o ProGuard
Depois de criar o jar do bytecode do seu aplicativo e um arquivo personalizado de configuração do ProGuard (chamado
por exemplo, usage.pg
), é possível criar um arquivo de relatório de uso com o seguinte comando:
java -jar proguard.jar @usage.pg > usage.log
Isso vai criar um arquivo chamado usage.log
que lista as classes e os métodos não usados do aplicativo.
Como executar o J2ObjC com a eliminação de códigos inativos
Agora que você tem o relatório de uso do ProGuard, pode ativar a fase de eliminação de códigos inativos no
J2ObjC usando a flag de linha de comando --dead-code-report <file>
. A tradução DeadCodeEliminator
utilizará o relatório de uso para remover os códigos inativos de cada arquivo de origem antes da tradução para o
usando o Objective-C.