Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Throwable().getStackTrace()[0]。getLineNumber()已被proguard混淆_Java_Android_Proguard_Android Proguard - Fatal编程技术网

Java Throwable().getStackTrace()[0]。getLineNumber()已被proguard混淆

Java Throwable().getStackTrace()[0]。getLineNumber()已被proguard混淆,java,android,proguard,android-proguard,Java,Android,Proguard,Android Proguard,在前进之前: Throwable().getStackTrace()[0].getLineNumber(); 我得到: 482 在Proguard之后,我得到: 41 这显然是错误的 以下是解决此问题的经过测试的规则: -keep class java.lang.StackElement -keepattributes StackTraceElement -keepattributes SourceFile,LineNumberTable -keepattributes Signature -

在前进之前:

Throwable().getStackTrace()[0].getLineNumber();
我得到:

482

在Proguard之后,我得到:

41

这显然是错误的

以下是解决此问题的经过测试的规则:

-keep class java.lang.StackElement
-keepattributes StackTraceElement
-keepattributes SourceFile,LineNumberTable
-keepattributes Signature
-keepattributes InnerClasses,EnclosingMethod
-keepattributes getStackTrace
但它不起作用。是否有任何特定规则可以让这段代码正常工作?

根据,您需要执行以下操作:

-renamesourcefileattribute SourceFile    
-keepattributes SourceFile,LineNumberTable
您需要使用
-printmapping
保存映射,以便能够解码模糊的堆栈跟踪

我应该指出,对标准类库中的类和方法的引用将始终保留,因为在加载代码时需要它们。因此,“保持”是多余的:

-keep class java.lang.StackElement
您还告诉Proguard保留不存在的名为“StackTraceElement”和“getStackTrace”的属性。支持的属性列表已记录在案

另见:

  • 。问题是不同的(您不想保留方法名!),但公认的答案提到了上述解决方案

感谢您的准确回答。