【问题标题】:ProGuard obfuscation - java.lang.NoSuchMethodError: getPointerProGuard 混淆 - java.lang.NoSuchMethodError: getPointer
【发布时间】:2014-01-21 12:47:12
【问题描述】:

我试图混淆我编写的游戏。我将其精简为一个非常基本的项目来说明问题(该项目可以在这里找到:https://github.com/dschneider/libgdx-proguard-test)。

您必须安装 ant 并在终端中运行 ma​​ke desktop 来编译和混淆项目。之后尝试运行混淆后的 jar 时出现以下错误:

Exception in thread "main" java.lang.NoSuchMethodError: getPointer
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1965)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1894)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1851)
at java.lang.Runtime.load0(Runtime.java:795)
at java.lang.System.load(System.java:1062)
at org.lwjgl.Sys$1.run(Sys.java:70)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.b(Sys.java:66)
at org.lwjgl.Sys.c(Sys.java:95)
at org.lwjgl.Sys.<clinit>(Sys.java:112)
at org.lwjgl.openal.AL.<clinit>(AL.java:59)
at com.badlogic.gdx.backends.openal.OpenALAudio.<init>(OpenALAudio.java:70)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.<init>(LwjglApplication.java:82)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.<init>(LwjglApplication.java:64)
at com.libgdxproguard.test.Main.main(Main.java:14)

我错过了什么吗?当我告诉 ProGuard 不要混淆代码时,它会在之后起作用。显然有些东西被混淆了什么不应该被混淆,但我不知道如何解决这个错误。

【问题讨论】:

标签: java ant libgdx lwjgl proguard


【解决方案1】:

liblwjgl.so 中的本机代码使用反射回调 LWJGL 库的 Java 代码。 ProGuard 不知道本机代码所做的任何事情,因此它可能会删除或重命名类、字段和方法,这会破坏反射。最简单的解决方案是告诉 ProGuard 以原始名称保留所有这些:

-keep class org.lwjgl.** { *; }

GDX 库中的libgdx.so 也是如此,所以:

-keep class com.badlogic.** { *; }

您可以通过更精确地确定需要保留哪些类、字段和方法来优化此配置。

【讨论】:

  • 非常感谢,成功了!我认为它会这样工作,我实际上想保留这些包中的所有内容。我以前一直在使用“-keep class org.lwjgl.**”。大括号内的星号是指包内的所有方法、字段和类吗?
  • @RaceCondition *; 在花括号内是 &lt;fields&gt;; &lt;methods&gt;; 的缩写。请参阅 ProGuard 手册 > 使用 > 类规范:proguard.sourceforge.net/manual/usage.html#classspecification
猜你喜欢
  • 1970-01-01
  • 2019-07-20
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多