Proguard设置为不删除未使用的方法

viv*_*k.m 3 android proguard

考虑到android的以下代码结构:

package blah;
class A{
    class B{
        public void foo(String s){
        }
    } 
}
Run Code Online (Sandbox Code Playgroud)

我如何告诉proguard不要删除或混淆foo.
foo在编译时是代码中未使用的函数,但是在运行时从另一个代码运行.

我试过了:

-keep class blah.A.B;

-keepclassmembers class blah.A.B {
  public void foo(String s);
}
Run Code Online (Sandbox Code Playgroud)

等等,但没有什么能阻止Proguard删除该功能.我不希望proguard改变'foo'的名字.Proguard可能会更改A类或B类的名称,但不能更改函数名称'foo'.有什么建议?

Eri*_*une 6

几乎是正确的.在java字节码中,$字符分隔内部类及其外部类的名称(以避免与包名称的歧义).所以,只保留方法:

-keepclassmembers class blah.A$B {
  public void foo(java.lang.String);
}
Run Code Online (Sandbox Code Playgroud)