首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使重写\实现另一个方法的类方法名不被混淆?

如何使重写\实现另一个方法的类方法名不被混淆?
EN

Stack Overflow用户
提问于 2013-07-16 11:54:49
回答 2查看 4K关注 0票数 5

如果我有一个实现Class BInterface A,而Proguard不知道该接口的存在,我如何保留实现接口A的抽象方法的方法的名称?

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

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

代码语言:javascript
运行
复制
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配置中声明接口名称。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-16 17:56:35

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

所以你的.pro文件应该是这样的-

代码语言:javascript
运行
复制
#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*
票数 8
EN

Stack Overflow用户

发布于 2013-07-16 12:29:22

我为Android应用程序编写了一个博客。请查看下面的链接

http://techspreadwithshraddha.wordpress.com/2013/03/26/android-progaurd/

ProGuard可以做你描述的事情。如果不希望它重命名类和方法,请尝试以下方法:

代码语言:javascript
运行
复制
-keep,allowshrinking,allowoptimization class * { <methods>; }

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17675882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档