由于Butterknife
使用反射生成与所使用的每个activity
或fragment
相关联的类。由于Proguard
忽略了这些类而没有在其规则中对其进行模糊处理。
发现一个解决方法是使用Butterknife生成的类,用新ButterKnife.bind(this)
替换Whatever_ViewBinder(this)
并在我的代码中使用它们。哪个确实有效,Progurad会混淆我的课程。但这里唯一的问题是我必须将它们从Debug
文件夹复制到我的包中才能被更改/删除。并在每次添加/删除视图时更新它。 source
我发现的另一个问题是,最好使用数据绑定代替Butterknife vs Data Binding。但现在为时已晚我改变整个代码
如果您发现任何相关工作,请分享。 我正在使用Butterknife v8.6.0。如果这有任何帮助
答案 0 :(得分:1)
您甚至可以使用#746自行链接到您的答案。
[...]直到我从班级中删除所有进口的黄油刀,Proguard无法使用它。
这是因为Proguard规则随Butter Knife一起提供,直到版本9.0。
使用生成时,ProGuard规则将在9.0中分开 代码API变得稳定。
所以基本上你不可能轻易做你想做的事情。最好的方法是分叉Butter Knife并从 build.gradle 中删除consumerProguardFiles
定义。然后等待9.0版本发布,然后再次使用原版。