【问题标题】:How to avoid that proguard obfuscates the classes annotated with @OnStart如何避免 proguard 混淆使用 @OnStart 注释的类
【发布时间】:2012-10-19 11:50:11
【问题描述】:

在基于 NetBeans Platform 7.2 的应用程序中,可以 用以下代码替换 ModuleInstall 类:

import org.openide.modules.OnStart;
import org.openide.modules.OnStop;

@OnStart
public final class Installer implements Runnable {

   @Override
   public void run() {
       System.out.println("enable something...");
   }

   @OnStop
   public static final class Down implements Runnable {
       @Override
       public void run() {
           System.out.println("disable something...");
       }
   }
}

我的问题是,经过混淆,类加载器没有找到 带注释的类。

在我添加的 Proguard 配置中(建议 here)

-keep @org.openide.modules.OnStart class *

但显然这还不够或不起作用。

有人有什么建议吗?

【问题讨论】:

  • @jolivier -keepattributes *Annotation* 没有帮助。

标签: obfuscation netbeans-7 proguard netbeans-platform


【解决方案1】:

据我所知,您需要明确保留用于保留任何规范的注释。所以,在你的情况下,添加

-keep enum org.openide.modules.OnStart

将允许将此注释用作选择器。 如果注释选择器实际上不匹配,Proguard 确实应该包含警告消息。保留注释也没有任何意义,尤其是在它不是运行时保留的情况下。

【讨论】:

    【解决方案2】:

    你试过-keepattributes *Annotation*吗?基于proguard usage,它可能会奏效。

    【讨论】:

      猜你喜欢
      • 2014-08-02
      • 2017-04-01
      • 2014-08-18
      • 2016-07-21
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多