Proguard 设置不删除未使用的方法
考虑以下 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 删除该功能。 我不希望混淆器更改“foo”的名称。 Proguard 可以更改 A 类或 B 类的名称,但不能更改函数名称“foo”。 有什么建议吗?
Conside the following code structure for android:
package blah;
class A{
class B{
public void foo(String s){
}
}
}
How can I tell proguard to not remove or obfuscate foo.
foo is unused function in code at compile time but is run at run-time from another code.
I have tried:
-keep class blah.A.B;
-keepclassmembers class blah.A.B {
public void foo(String s);
}
etc. but nothing stops Proguard from removing that function.
I do not want proguard to change name of 'foo'. Proguard may change the name of class A or class B but not the function name 'foo'.
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
几乎是对的。在 java 字节码中,$ 字符分隔内部类及其外部类的名称(以避免包名称产生歧义)。因此,只保留方法:
Almost right. In java bytecode, the $ character separates the names of inner classes and their outer classes (to avoid ambiguities with package names). So, to keep just the method:
我有一个仅在 xml 文件中引用的方法“myClickHandler”。
这
会阻止它在我的应用程序中被删除。也许扩展..会为你工作
I have a method 'myClickHandler' referenced only in an xml file.
This
stops it being removed in my application. Perhaps the extends .. will work for you