以下定义有什么问题?
-keep class com.foo.bar。**实现android.content.ServiceConnection { *; }
我需要将onServiceConnected或disconnect方法保留在:
com.foo.bar.SomeClass $ SomeInnerClass $ SomeInnerInnerClass实现ServiceConnection { //我需要保留的方法 }
Proguard总是将它们剥离出来。
到目前为止我找到的唯一解决方案是保留整个com.foo.bar包。
注意:我无法保留com.foo.bar.SomeClass,因为名称可以更改。我得到一个JAR文件,其中包含已经受过保护的代码。所以SomeClass实际上被称为“dw”,而SomeInnerClass实际上被称为“a”。但我显然不能依赖它。
感谢。
答案 0 :(得分:1)
您的配置看起来是正确的,但ProGuard已经自动保留了在ServiceConnection等运行时接口中实现方法的方法。您无需明确指定它们。您可以查看bin / proguard / mapping.txt以查看类和方法的旧/新名称。您可以使用Android工具dexdump
检查classes.dex文件,仔细检查类是否存在,它们是否实现了接口,以及方法是否存在。
答案 1 :(得分:0)
我有特殊情况。我编写一个jar文件,只保留一个自定义而不是系统接口实现,并混淆其他包括方法内容。我尝试了很多,找到一种方式或多或少满足我。
-keepclassmembernames class aa.bb.Impl {
public <methods>;
}