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

发布于 2025-01-05 10:52:43 字数 451 浏览 0 评论 0原文

考虑以下 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

三生一梦 2025-01-12 10:52:43

几乎是对的。在 java 字节码中,$ 字符分隔内部类及其外部类的名称(以避免包名称产生歧义)。因此,只保留方法:

-keepclassmembers class blah.A$B {
  public void foo(java.lang.String);
}

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:

-keepclassmembers class blah.A$B {
  public void foo(java.lang.String);
}
人间☆小暴躁 2025-01-12 10:52:43

我有一个仅在 xml 文件中引用的方法“myClickHandler”。

-keepclassmembers class * extends android.app.Activity {
    public void myClickHandler(android.view.View );
}

会阻止它在我的应用程序中被删除。也许扩展..会为你工作

I have a method 'myClickHandler' referenced only in an xml file.

This

-keepclassmembers class * extends android.app.Activity {
    public void myClickHandler(android.view.View );
}

stops it being removed in my application. Perhaps the extends .. will work for you

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文