考虑以下android的代码结构:
package blah;
class A{
class B{
public void foo(String s){
}
}
}
我如何告诉proguard不要移除或混淆foo foo在编译时是代码中未使用的函数,但是在运行时从另一个代码运行。
我试过了:
-keep class blah.A.B;
-keepclassmembers class blah.A.B {
public void foo(String s);
}
等。但没有什么可以阻止Proguard删除该功能。 我不希望proguard改变'foo'的名字。 Proguard可能会更改A类或B类的名称,但不能更改函数名称'foo'。 有什么建议吗?
答案 0 :(得分:5)
几乎是正确的。在java字节码中,$字符分隔内部类及其外部类的名称(以避免与包名称的歧义)。所以,只保留方法:
-keepclassmembers class blah.A$B {
public void foo(java.lang.String);
}
答案 1 :(得分:0)
我的方法'myClickHandler'仅在xml文件中引用。
这个
-keepclassmembers class * extends android.app.Activity {
public void myClickHandler(android.view.View );
}
停止在我的应用程序中删除它。也许扩展..对你有用