2010-10-12 17 views
65

Böyle bir şey varAndroid'de gizlenmiş (ProGuard ile) uygulamalarla nasıl hata ayıklanır?

ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException 
ERROR/AndroidRuntime(18677):  at com.companyname.a.a.a(Unknown Source) 

nasıl sorun ve bu sorunun hata ayıklama nerede olduğunu biliyor musun? Sadece haritalama çıktısını ProGuard'dan aldım ve satır numarasını bilmiyorum. Teşekkürler.

cevap

109

Aşağıdaki satırları proguard yapılandırmanıza ekleyin.

-renamesourcefileattribute SourceFile  
-keepattributes SourceFile,LineNumberTable 

Şimdi yığın izleri satır numaralarını içerecek ve ProGuard ile gemiler (Android SDK dahil) retrace aracını kullanarak, normal gibi hata ayıklamak edebiliyoruz.

Bu iki yapılandırma seçeneğini kullanmamış olsanız bile, henüz kesin olarak açık olmamakla birlikte, yeniden eşleme dosyasının eşleme dosyasının olması koşuluyla yararlı bilgiler verebileceğinizi unutmayın.

Not: eşlemeler ile dosya proguard yapılandırma seçeneği ile üretilmektedir: Android SDK ile birlikte karınca dosyasında

-printmapping outputfile.txt 

, mapping.txt ayarlanır.

İyi şanslar.

15

Android Market hesabınızdan herhangi bir yığın izinden yararlanmak için, ProGuard yapılandırmasındaki -printmapping seçeneği ile üretilen harita dosyanızı yığın izlemenin kodunu çözmek için ReTrace (ProGuard tamamlayıcı aracı) ile kullanabilirsiniz. Harita dosyasının içeriğini kullanarak elle de çözebilirsiniz, ancak bu sıkıcıdır. Örnekler altında ProGuard El Kitabında, satır numaralarının nasıl saklanacağı dahil olmak üzere, yararlı gizlenmiş yığın izlerinin üretilmesiyle ilgili bir bölüm bulunmaktadır.

Maalesef, ProGuard'ı satır numaralarını saklayacak şekilde ayarlamadıysanız, yalnızca istisnayı atan yöntemi tanımlayabilirsiniz.

+4

Bu işlem ayrıca http://developer.android.com/guide/developing/tools/proguard.html adresinde de açıklanmıştır. #decoding –

+0

ADT 17'de (şu anda bir Önizleme sürümü) geliyor, PorGuard'ın Androi için nasıl yapılandırıldığıyla ilgili başka değişiklikler de var d. http://tools.android.com/recent/proguardimprovements Yazdırma eşlemesini kullanarak nasıl hata ayıklanacağı değişmez, ancak ProGuard'ı başlangıçta nasıl yapılandırdığınızı değiştirir. – cistearns

+0

@cistearns denedim ama aynı kodlanmış değer ile aynıdır: (herhangi bir yardım? –

4

stack_trace.txt

aşağıdaki komutu çalıştırın daki yığın izleme yapıştırın: retrace.jar sdk \ araçları olan

classes-processed.map stack_trace.txt retrace.jar -jar java \ proguard \ lib \ retrace.jar classes-processed.map, gizleme yaptığınızda proguard tarafından oluşturulan çıktı dosyasıdır.

İlgili konular