Proguard混淆重映射输出混乱

8

我这里有一份来自于安卓市场游戏的堆栈跟踪。我已经反混淆了它,但是我并不能真正理解它!

我不是在请求解决错误本身,而只是想要知道如何解读它。

我从市场开始使用了这个:

java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:299)
at com.a.a.k.o.a(Unknown Source)
at com.a.a.k.w.a(Unknown Source)
at com.a.a.k.w.onDrawFrame(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)

但是retrace.bat输出了更长的内容,所以我无法确定com.a.a.k.o.a是什么(例如)。
java.lang.IllegalArgumentException
at java.nio.Buffer.position(Buffer.java:299)
at com.eaw.graphics.WorldViewShader.void glSetMVPMatrix(float[])(Unknown Source)
                                    void glSetNormalMatrix(com.eaw.graphics.AMatrix)
                                    void SetVertices(java.nio.FloatBuffer)
                                    void ApplyArgs(com.eaw.graphics.WorldViewShaderArgs)
at com.eaw.graphics.TriangleRenderer.void onDrawFrame(com.eaw.airrace.ILayer,com.eaw.airrace.StepOutput,boolean)(Unknown Source)
                                     void loadTexture$332cd44f(int[],int,int)
                                     void delayedLoadTexture(int[],int[],int,int)
at com.eaw.graphics.TriangleRenderer.void onDrawFrame(javax.microedition.khronos.opengles.GL10)(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1363)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1118)

它在遮蔽期间是否将4个功能合并成1个?或者是什么情况?
2个回答

6
你应该在你的proguard配置文件中添加-keepattributes SourceFile,LineNumberTable!

5
您的处理后的代码和堆栈跟踪不包含行号,因此ProGuard无法确定混淆方法名“a”对应哪个原始方法名。然后,它会打印出所有可能的替代方案。请参阅ProGuard的Retrace手册
该手册还记录了如何在混淆步骤中保留行号的方法。

3
截至今日,追踪手册似乎无法访问。我已经启用了LineNumberTable等功能,可以在我的映射文件中看到行号,但是追踪仍然不能消除方法之间的歧义。 - HRJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接