Pengantar
Jala sumber aplikasi Java Anda mungkin berisi sejumlah besar file sumber yang sama sekali tidak digunakan atau disertakan hanya untuk beberapa metode. Menerjemahkan kode mati ini ke Objective-C akan membengkak aplikasi iOS Anda secara tidak perlu dan meningkatkan kemungkinan mengalami kesalahan terjemahan, terutama jika salah satu pustaka Java Anda menggunakan fitur yang tidak didukung oleh Penerjemah J2ObjC.
ProGuard adalah fitur open source yang membantu Anda menyusutkan, meng-obfuscate, dan merusak bytecode Java. Opsional, dengan jar bytecode, dapat mencetak "penggunaan" laporan yang mencantumkan semua class dan metode yang tidak digunakan di aplikasi Anda. J2ObjC dapat menggunakan laporan tersebut untuk melewati class dan metode ini selama penerjemahan.
ProGuard dapat didownload di sini.
Mengonfigurasi ProGuard
ProGuard menerima file konfigurasi sebagai argumen command line yang menentukan pengoptimalan yang kinerja yang baik dan laporan yang harus dihasilkannya. Karena J2ObjC hanya perlu tahu tentang kode yang mati, Anda sebaiknya menonaktifkan semua pengoptimalan dan logging tidak relevan; file yang diteruskan ke J2ObjC seharusnya hanya terdiri dari teks header ProGuard dan laporan penggunaan.
Pertama, pastikan Anda memiliki jar bytecode untuk aplikasi Anda yang sesuai dengan jar sumber. Anda dapat menggunakan file konfigurasi berikut, yang disalin dari panduan ProGuard, sebagai template untuk membuat output yang diharapkan J2ObjC:
-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 *;
}
Ubah file konfigurasi ini untuk memastikan bahwa ProGuard tidak menghilangkan apa pun yang tidak seharusnya.
Jika jar Anda adalah aplikasi dan bukan hanya library, tentukan metode main()
seperti yang telah kita
dilakukan di sini harus menyimpan
semua yang diperlukan; Anda dapat memeriksa {i>output<i} yang dihasilkan dari
ProGuard sebagai pemeriksaan kesehatan.
Menjalankan ProGuard
Setelah Anda memiliki bytecode jar aplikasi dan file konfigurasi ProGuard yang disesuaikan (disebut,
misalnya, usage.pg
), Anda dapat membuat file laporan penggunaan dengan perintah berikut:
java -jar proguard.jar @usage.pg > usage.log
Tindakan ini akan membuat file bernama usage.log
yang mencantumkan class dan metode aplikasi Anda yang tidak digunakan.
Menjalankan J2ObjC dengan eliminasi kode mati
Setelah memiliki laporan penggunaan ProGuard, Anda dapat mengaktifkan fase penghapusan kode yang mati di
J2ObjC menggunakan flag command line --dead-code-report <file>
. Terjemahan The DeadCodeEliminator
akan menggunakan laporan penggunaan untuk menghapus kode mati dari setiap file sumber sebelum diterjemahkan ke
{i>Objective<i}-C.