Proguard调试版的应用程序不包含方法参数或变量

时间:2014-07-14 23:22:10

标签: android proguard

所以我有一个使用几个非常大的SDK(例如Amazon AWS SDK)的应用程序。为了规避dex文件的64k方法限制,我在app的prod和debug版本上运行proguard,以便成功编译。

proguard文件如下:

-keep class org.w3c.dom.bootstrap.** { *; }
-keep class org.joda.time.** { *; }
-keep class com.facebook.** { *; }
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-dontwarn org.codehaus.jackson.map.ext.**

该应用运行正常,我可以使用Android Studio内置的调试器来添加断点并逐步完成代码。

然而,当我这样做时,我注意到通常记录在调试窗口的Variables部分中的任何方法参数都没有显示出来。此外,声明的任何常规变量,如

int number = 4;

也不会出现。唯一显示的变量是类成员变量。

我是否需要添加到我的proguard文件中以获取其余的这些变量?谢谢!

1 个答案:

答案 0 :(得分:3)

默认情况下,ProGuard的混淆步骤会删除变量名称,因为虚拟机并不需要它们。您可以使用

保留它们
-keepattributes LocalVariableTable, LocalVariableTypeTable

对于调试,您可能只是应用收缩,禁用优化(耗时)和混淆(难以调试):

-dontoptimize
-dontobfuscate