【问题标题】:What does the exclamation mark before class path do in ProGuard?ProGuard 中类路径前的感叹号有什么作用?
【发布时间】:2016-03-23 03:43:03
【问题描述】:

我现在正在研究 Proguard,但我对感叹号感到困惑!在设置中的classpath之前,如:

-保持类 !android.support.v7.view.menu.{*;}**

这是什么“!”做?这是否意味着proguard不会保留这个类?但如果是这样,为什么我们需要它,因为 proguard 会混淆所有类?

【问题讨论】:

标签: java android proguard android-proguard


【解决方案1】:

意思是一样的!意味着在许多其他编程语言中。它否定随后的选择。因此,在您的示例中,keep 指令将适用于以下包/类选择中 not 的所有内容。

【讨论】:

  • 感谢 Doug,这是否意味着如果我的配置文件中没有任何保留,proguard 将混淆所有类?
  • ProGuard 会尽可能地进行混淆,是的。但是,您至少应该在项目中使用默认的 Android 规则,否则在混淆后可能无法正常工作。
  • 谢谢老兄,最后一个问题,我有这行规则 1.-keep class !android.support.v7.view.menu.**{;} 它会混淆了这个包中的 MenuBuilder 类,但是在我添加这行规则之后 #-keep interface android.support.v7.* { *; },MenuBuilder 类没有被混淆,但是,我在这里没有看到冲突。介意再解释一下吗?非常感谢
  • 我不明白为什么这条线很重要。只需将其删除,然后自己看看使用 MenuBuilder 的东西是否仍然按您期望的方式工作。
猜你喜欢
  • 2011-04-14
相关资源
最近更新 更多