Einführung
Die JAR-Quelldatei Ihrer Java-Anwendung enthält wahrscheinlich eine große Anzahl von Quelldateien, die entweder überhaupt nicht verwendet oder nur für einige Methoden verwendet wird. Diesen toten Code in Objective-C übersetzen Ihre iOS-App unnötig aufblähen und die Wahrscheinlichkeit erhöhen, Übersetzungsfehler auftreten, insbesondere wenn eine Ihrer Java-Bibliotheken Funktionen verwendet, die vom J2ObjC-Übersetzer.
ProGuard ist ein Open-Source-Tool, mit dem Sie den Java-Bytecode zu verschleiern und anderweitig zu manipulieren. Optional kann bei einer Bytecode-JAR-Datei ein „Nutzung“ Bericht, der alle nicht verwendeten Klassen und Methoden in Ihrer Anwendung auflistet. J2ObjC kann um diese Klassen und Methoden bei der Übersetzung zu überspringen.
ProGuard kann hier heruntergeladen werden.
ProGuard konfigurieren
ProGuard akzeptiert eine Konfigurationsdatei als Befehlszeilenargument, das die Optimierungen angibt welche Berichte erstellt werden sollen. Da J2ObjC nur über toten Code Bescheid wissen muss, Sie sollten alle Optimierungen und irrelevantes Logging deaktivieren. sollte die an J2ObjC übergebene Datei aus dem ProGuard-Header-Text und dem Nutzungsbericht.
Stellen Sie zunächst sicher, dass Sie eine Bytecode-JAR-Datei für Ihre Anwendung haben, die der Quell-JAR-Datei entspricht. Sie können die folgende Konfigurationsdatei aus dem ProGuard-Handbuch als Vorlage zum Erstellen des Ausgabe, die J2ObjC erwartet:
-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 *;
}
Ändern Sie diese Konfigurationsdatei so, dass ProGuard keine unerwünschten Inhalte entfernt.
Wenn es sich bei Ihrer JAR-Datei um eine Anwendung und nicht nur um eine Bibliothek handelt, geben Sie die Methode main()
an, da wir
alles Notwendige behalten, können Sie die Ausgabe
ProGuard als Plausibilitätsprüfung durchführen.
ProGuard ausführen
Sobald Sie die Bytecode-JAR-Datei Ihrer Anwendung und eine angepasste ProGuard-Konfigurationsdatei mit dem Namen
usage.pg
) können Sie mit dem folgenden Befehl eine Nutzungsberichtdatei erstellen:
java -jar proguard.jar @usage.pg > usage.log
Dadurch wird eine Datei mit dem Namen usage.log
erstellt, in der die nicht verwendeten Klassen und Methoden Ihrer Anwendung aufgeführt sind.
J2ObjC mit Eliminierung von inaktiven Codes ausführen
Da Sie nun über den ProGuard-Nutzungsbericht verfügen, können Sie die Phase der Eliminierung von fehlerhaften Codes in
J2ObjC mit dem Befehlszeilen-Flag --dead-code-report <file>
. The DeadCodeEliminator-Übersetzung
Phase nutzt den Nutzungsbericht, um toten Code aus jeder Quelldatei zu entfernen, bevor die Übersetzung erfolgt.
Objective-C