9

换句话说:我-keep应该使用什么命令来告诉 Proguard 避免混淆代表本机库的类?(因为 JNA 要求名称与等效的本机函数、结构等匹配)

4

4 回答 4

5

这是我现在使用的规则:

-keepclassmembers class * extends com.sun.jna.** {
    <fields>;
    <methods>;
}

我仍然认为可能有更好的方法来做到这一点。

于 2012-05-14T17:58:03.493 回答
2

对我来说也有效

-keep class com.sun.jna.** { *; }
-keep class * implements com.sun.jna.** { *; }
于 2020-10-27T11:03:24.637 回答
1

我想我用这些规则解决了这个问题,因为他们似乎需要对包的所有内容进行去混淆处理:

-keep class com.sun.jna.** { *; }
-keep class * implements com.sun.jna.** { *; }
于 2020-05-10T05:08:33.730 回答
0

JNA 默认使用库接口方法名称来查找本机函数名称。除此之外的任何东西都应该能够承受混淆。

如果您的测试包括所有 JNA 调用的覆盖范围,那么您应该能够几乎与在此处提出问题一样快地进行测试。

编辑

考虑这是一条评论,因为我不准备提供“-keep”命令:)

您当然必须避免消除或重新排序任何结构字段。

于 2012-05-11T20:02:01.240 回答