2011-07-18 11 views

cevap

33

ProGuard manual > Examples > Producing useful obfuscated stack traces

SourceFile niteliği, gereklidir. Android'in Dalvik sanal makinesi için bunun doğru olup olmadığını kontrol etmedim.

Çözüm olarak, ProGuard SourceFile özniteliğini koruyabilir, ancak içeriğini kendi seçtiğiniz bir anlamsız dizeyle değiştirebilir, örn.

-renamesourcefileattribute SourceFile 

Dize izlerinin yorumlanması için dizenin değeri önemli değildir. "SourceFile" gibi bir dizgenin seçilmesi, sınıf dosyası boyutlarını yükseltmekten kaçınır, çünkü bu dize zaten tanımlıdır.

+0

Teşekkürler Eric. Bu şeyleri açıklığa kavuşturuyor. – wirbly

+0

@Eric, Neden kaynak dosya özniteliğini korumak için sınıf isimleri garbit? Tabii yığınlar işe yaramıyor, ama akıl yürütme noktası değil mi? –

+1

@mP Yukarıdaki yapılandırma SourceFile özniteliğini korur, ancak içeriğini değiştirir. JVM daha sonra tam yığın izlerini basacak, ancak gizlenmiş isimleri ile. Bunlar, ProGuard'ın geliştirici için ürettiği eşleme dosyası yardımıyla, gizlenmiş uygulamanın hatalarını ayıklamak için yararlı olabilir. –

2

Tam olarak ne olduğundan emin değilim, ancak kaynak dosya adı sınıfın gerçek adını içerdiğinde, bir kişi gizlenmiş sınıf isimlerini gerçek sınıf isimlerine eşlemek için bunu kullanabilir. Obfsucation zaten herşeyi dolaştırıyor, neden kaynak dosyasını tutuyorsun? Her şey çalışmalı ve çalışmaya devam edecektir, hata ayıklama ayrıntıları çalışma zamanı tarafından gerekli değildir, bu nedenle onları tutmak için hiçbir şey ifade etmez. Hedefi ne kadar çok alırsanız o kadar iyi olur. Oracle/Sun'ın Java sanal makinesi aksi gerçekten ne istediğini (ve kendi başına oldukça zararsız olan) olan yığın izleri satır numaraları içermediği için

İlgili konular