如何告诉Proguard避免混淆JNA库类?

时间:2012-05-11 19:00:54

标签: java proguard jna

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

4 个答案:

答案 0 :(得分:4)

这是我现在使用的规则:

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

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

答案 1 :(得分:1)

对我来说也很好

-keep class com.sun.jna.** { *; }
-keep class * implements com.sun.jna.** { *; }

答案 2 :(得分:0)

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

如果您的测试包含所有JNA呼叫的覆盖范围,那么您应该能够像在此处提出问题那样快速地进行测试。

修改

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

您当然必须避免删除或重新排序任何Structure字段。

答案 3 :(得分:0)

我想我改用这些规则解决了它,因为似乎它们需要对软件包的所有内容进行模糊处理:

-keep class com.sun.jna.** { *; }
-keep class * implements com.sun.jna.** { *; }