换句话说:我应该使用什么-keep
命令告诉Proguard避免混淆代表本地库的类? (因为JNA要求名称与等效的本机函数,结构等相匹配)
这是我现在使用的规则:
-keepclassmembers class * extends com.sun.jna.** {
<fields>;
<methods>;
}
我仍然认为可能会有更好的方法。
JNA默认情况下使用库接口方法名称来查找本机函数名称。除此以外的任何东西都应该能够承受混淆。
如果您的测试包括所有JNA调用的覆盖范围,那么您应该能够几乎像在此提问一样快地对其进行测试。
编辑
考虑此评论,因为我不准备提供“ -keep”命令:)
您当然必须避免消除或重新排列任何Structure字段。
我想我改用这些规则解决了它,因为似乎它们需要对软件包的所有内容进行模糊处理:
-keep class com.sun.jna.** { *; }
-keep class * implements com.sun.jna.** { *; }