2015-07-30 2 views
2

Я создаю освобождающий apk, который запутывается Proguard. Я добавил первые два правила, чтобы помочь мне декодировать любые ошибки, которые может вывести логарифм.Профауза proguard, вызывающая загадочную ошибку

-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 

-keep @io.realm.annotations.RealmModule class * 
-dontwarn javax.** 
-dontwarn io.realm.** 
-dontwarn rx.internal.** 

#Butterknife 
-keep class butterknife.** { *; } 
-dontwarn butterknife.internal.** 
-keep class **$$ViewBinder { *; } 
-keepclasseswithmembernames class * { 
@butterknife.* <fields>; 
} 
-keepclasseswithmembernames class * { 
@butterknife.* <methods>; 
} 


#EventBus 
-keepclassmembers class ** { 
public void onEvent*(**); 
} 

#JodaTime 

-dontwarn org.joda.convert.** 
-dontwarn org.joda.time.** 
-keep class org.joda.time.** { *; } 
-keep interface org.joda.time.** { *; } 

Ошибка на аварии приложение выглядит следующим образом:

AndroidRuntime:Error at com.example.app.e.b.a(SourceFile:65) 
AndroidRuntime:Error at com.example.app.e.b.doInBackground(SourceFile:21) 

Первые два правила помогли показывая мне фактические номера строк, но у меня возникли проблемы выяснить, что такое «ЕВА» и «гЪ 'намекают. Любая помощь будет высоко ценится.

EDIT:

После использования инструмента Retrace я получил следующее:

07-30 13:38:44.886 E/AndroidRuntime(5563): Process: com.example.app, PID: 5563 
07-30 13:38:44.886 E/AndroidRuntime(5563): at com.example.app.e.c$a.a(SourceFile:266) 
07-30 13:38:44.886 E/AndroidRuntime(5563): at com.example.app.e.c$a.doInBackground(SourceFile:250) 
07-30 13:38:44.886 E/ActivityManager(1173): App crashed! Process: com.example.app 
+0

Файл каталога.txt должен находиться где-то в вашем каталоге проекта. Этот файл генерируется ProGuard и содержит информацию о переименовании методов, полей и т. Д. – Michael

ответ

2

Использование документации по ProGuard http://developer.android.com/tools/help/proguard.html вы увидите, что вы можете использовать ProGuard включенную в SDk инструментов deobfuscate трассировки стека ,

retrace.bat -verbose mapping.txt obfuscated_trace.txt

Как вы можете видеть, если вы используете файл mapping.txt сгенерированный и при создании APK (или JAR в ванильным Java), вы можете распутывания трассировки стека.

Если вы предпочитаете использовать графический интерфейс, вы также можете заглянуть в папку Android SDK <path>/sdk/tools/proguard/bin/proguardgui.{bat|sh}. Графический интерфейс позволяет вам выбирать файл сопоставления, а затем копировать/вставлять трассировки стека в окно, чтобы деобфусить.

+0

Я следил за вашими шагами, и трассировка стека все еще не была полностью дефискирована. Я включил это мое редактирование выше. Спасибо. –

+0

Вам нужно обрезать мусор из ловушки. К сожалению, proguard не очень умный, когда дело доходит до повторной проверки. Каждая строка должна начинаться с 'at', за исключением первой строки и часто последней строки. –

+0

Ага! Это сделал трюк! Еще раз благодарю вас за вашу помощь. –