【问题标题】:Obsfucation + Butterknife/Databinding混淆+小刀/数据绑定
【发布时间】:2017-10-18 10:09:31
【问题描述】:
我目前使用 Butterknife 将视图注入到我的代码中。
我注意到当我使用 minifyenabled 时类名没有被混淆,因为黄油刀需要正确的类名来生成将执行绑定的代理类。 (MainActivity.class -> MainActivity_ViewBinding.class)
我愿意切换到 android studio 中的“新”数据绑定库。但考虑到我的项目很大,工作量很大,这是我的问题:
数据绑定库也不会混淆类吗?
从黄油刀切换会影响我的应用的性能/大小吗?
谢谢
【问题讨论】:
标签:
android-studio
android-gradle-plugin
android-databinding
butterknife
【解决方案1】:
与 Butterknife 不同,数据绑定不使用反射。都是生成的代码。所以:
- 类将使用数据绑定进行混淆。我发现从 Butterknife 切换到我自己的应用程序也是如此。
- 性能可能会稍好一些,但我预计不会有太大的提升。我没有对其进行基准测试。
- Data Binding 库似乎没有引入任何其他库,因此在大小方面,不应该担心;不记得 Butterknife 有什么依赖项,我猜有一些。 Data Binding 库本身添加了大约 60 个类,其中大部分您不会实际使用。使用 Proguard(或 Android Shrinker)来消除未使用的类和方法也会将这种影响降到最低;不确定 Butterknife 库引入了多少类和方法。此外,有两种方法从您的代码生成的类,但它们对大小的影响应该不会那么大。