Ölü Kod Eleme

Giriş

Java uygulamanızın kaynak jar dosyasında büyük olasılıkla, tamamen kullanılmamış veya yalnızca birkaç yöntemle eklenmiş çok sayıda kaynak dosyası vardır. Bu ölü kodu Objective-C'ye çevirmek iOS uygulamanızı gereksiz bir şekilde şişirir ve özellikle Java kitaplıklarınızdan birinde J2ObjC çevirmeni tarafından desteklenmeyen özellikler kullanılıyorsa çeviri hatasıyla karşılaşma olasılığını artırır.

ProGuard, Java bayt kodunu daraltmanıza, gizlemenize veya başka bir şekilde bozmanıza yardımcı olan açık kaynaklı bir araçtır. İsteğe bağlı olarak, bir bayt kodlu jar dosyası verildiğinde, uygulamanızdaki kullanılmayan tüm sınıf ve yöntemlerin listelendiği bir "kullanım" raporu yazdırabilir. J2ObjC, çeviri sırasında bu sınıfları ve yöntemleri atlamak için böyle bir rapor kullanabilir.

ProGuard'ı buradan indirebilirsiniz.

ProGuard'ı yapılandırma

ProGuard, yapılandırma dosyasını, gerçekleştirmesi gereken optimizasyonları ve oluşturması gereken raporları belirten komut satırı bağımsız değişkeni olarak kabul eder. J2ObjC'nin yalnızca geçersiz kod hakkında bilgisi olması gerektiğinden, tüm optimizasyonları ve gereksiz günlük kaydını devre dışı bırakmanız gerekir. J2ObjC'ye iletilen dosya yalnızca ProGuard başlık metninden ve kullanım raporundan oluşmalıdır.

Öncelikle, uygulamanız için kaynak jar dosyasına karşılık gelen bir bayt kodu jar özelliğine sahip olduğunuzdan emin olun. ProGuard kılavuzundan kopyalanan aşağıdaki yapılandırma dosyasını, J2ObjC'nin beklediği çıkışı üretmek için bir şablon olarak kullanabilirsiniz:

-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 *;
}

ProGuard'ın kaldırmaması gereken hiçbir şeyi kaldırmadığından emin olmak için bu yapılandırma dosyasını değiştirin. Kavanozunuz yalnızca bir kitaplık değil de bir uygulamaysa, burada yaptığımız gibi main() yöntemini belirtmek gerekli olan her şeyi sağlayacaktır. ProGuard'dan elde edilen çıktıyı sağlık kontrolü olarak inceleyebilirsiniz.

ProGuard'ı çalıştırma

Uygulamanızın bayt kodu jar dosyasını ve özelleştirilmiş bir ProGuard yapılandırma dosyasını (örneğin, usage.pg) oluşturduktan sonra aşağıdaki komutla bir kullanım raporu dosyası oluşturabilirsiniz:

java -jar proguard.jar @usage.pg > usage.log

Bu işlem, uygulamanızın kullanılmayan sınıflarını ve yöntemlerini listeleyen usage.log adlı bir dosya oluşturur.

J2ObjC'yi geçersiz kod kaldırma özelliğiyle çalıştırma

ProGuard kullanım raporuna sahip olduğunuza göre artık --dead-code-report <file> komut satırı işaretini kullanarak J2ObjC'de geçersiz kod kaldırma aşamasını etkinleştirebilirsiniz. DeadCodeEliminator çeviri aşamasında, Objective-C'ye çevrilmeden önce her kaynak dosyadaki ölü kodları kaldırmak için kullanım raporu kullanılır.