【问题标题】:Proguard with Butterknife prevents obfuscation of class names带有 Butterknife 的 Proguard 可防止混淆类名
【发布时间】:2017-05-31 04:59:54
【问题描述】:

因为Butterknife 使用反射来生成与使用的每个activity 或fragment 关联的类。因此Proguard 会忽略这些类,并且不会在其规则中对其进行混淆。

发现解决此问题的一种方法是使用 Butterknife 生成的类,方法是将 ButterKnife.bind(this) 替换为新的 Whatever_ViewBinder(this) 并在我的代码中使用它们。这确实有效,Progurad 混淆了我的课程。但这里唯一的问题是我必须将它们从Debug 文件夹复制到我的包中,以免被更改/删除。并在我每次添加/删除视图时更新它。 source

我发现的另一个问题说最好使用数据绑定而不是Butterknife vs Data Binding。但是现在更改整个代码为时已晚

如果您找到任何解决此问题的方法,请分享。 我正在使用 Butterknife v8.6.0。如果这有任何帮助

【问题讨论】:

标签: android android-proguard butterknife


【解决方案1】:

您甚至使用#746 链接到您自己的答案。

[...] 直到我从类中删除所有导入的 Butter Knife,Proguard 无法处理它。

这是因为在 9.0 版之前,Proguard 规则是由 Butter Knife 本身提供的。

ProGuard 规则将在 9.0 中使用生成的 代码API变得稳定。

因此,基本上不可能轻松地完成您打算做的事情。最好的办法是 fork Butter Knife 并从 build.gradle 中删除 consumerProguardFiles 定义。那就等9.0版本出来再用原版吧。

【讨论】:

  • 我想这是目前唯一的选择。如果这不起作用,那么让我们对 v9 保持希望。还是谢谢
猜你喜欢
  • 2013-03-06
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
  • 2015-04-02
  • 1970-01-01
相关资源
最近更新 更多