gpt4 book ai didi

java - 如何防止混淆\实现另一个方法的类方法名称?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:32:31 24 4
gpt4 key购买 nike

如果我有一个Class B 实现了Interface A 而Proguard 不知道该接口(interface)的存在,我如何才能保留方法的名称实现接口(interface) A 的抽象方法?

请注意,我想保留方法名称,但我确实希望混淆它们的内容。

更新:这就是我所拥有的(请注意评论):

public class MyService extends Service {

// an anonymous class that implements ServiceConnection
private ServiceConnection myConnection = new ServiceConnection()
{
// don't change the following method's name
@Override
public void onServiceConnected(ComponentName className, IBinder service)
{
// I want this section to be obfuscated
}

}

我想要针对此类情况的通用解决方案 - 我不想在 ProGuard 配置中声明接口(interface)名称。

最佳答案

  • 保留所有公共(public)类名并保留(防止混淆)他们的公共(public)和 protected 方法。
  • 在非公共(public)类中并保留(防止混淆)所有公共(public)和 protected 方法。这将防止可能实现或扩展其他方法的方法被混淆。
  • 不要保留局部变量属性(使确保“LocalVariableTable”和“LocalVariableTypeTable”不是在“-keepattributes”选项中说明)。

因此您的 .pro 文件应如下所示 -

#Keeping all public class names and keep (prevent obfuscation) of their public and protected methods
-keep public class * {
public protected <methods>;
}

# Keep (prevent obfuscation) all public and protected methods in non-public classes.
# Notice that the non-public class names will still get obfuscated
-keepclassmembers !public class * {
public protected <methods>;
}

# Don't keep the local variables attributes (LocalVariableTable and LocalVariableTypeTable are dropped).
-keepattributes Exceptions,Signature,Deprecated,SourceFile,SourceDir,LineNumberTable,Synthetic,EnclosingMethod,RuntimeVisibleAnnotations,RuntimeInvisibleAnnotations,RuntimeVisibleParameterAnnotations,RuntimeInvisibleParameterAnnotations,AnnotationDefault,InnerClasses,*Annotation*

关于java - 如何防止混淆\实现另一个方法的类方法名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17675882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com