我目前使用 Butterknife 将 View 注入(inject)到我的代码中。 我注意到当我使用 minifyenabled 时,类名不会被混淆,因为 butterknife 需要正确的类名来生成将进行绑定(bind)的代理类。 (MainActivity.class -> MainActivity_ViewBinding.class)
我愿意切换到 android studio 中的"new"数据绑定(bind)库。但考虑到我的项目很大,工作量很大,这是我的问题:
数据绑定(bind)库也不会混淆这些类吗?
从 Butterknife 切换会影响我的应用的性能/大小吗?
谢谢
最佳答案
与 Butterknife 不同,数据绑定(bind)不使用反射。这都是生成的代码。所以:
- 类将通过数据绑定(bind)进行混淆。我发现对于我自己从 Butterknife 切换过来的应用来说,情况也是如此。
- 性能可能会稍微好一些,但我预计不会有太大的提升。我还没有对它进行基准测试。
- 数据绑定(bind)库似乎没有引入任何其他库,因此就大小而言,不应该担心;不记得 Butterknife 有哪些依赖项,我猜是有一些。数据绑定(bind)库本身添加了大约 60 个类,其中大部分您实际上不会使用。使用 Proguard(或 Android Shrinker)消除未使用的类和方法也可以最大限度地减少这种影响;不确定 Butterknife 库引入了多少类和方法。此外,还可以使用这两种方法从您的代码生成类,但它们对大小的影响应该不会那么大。
关于android-studio - 混淆 + Butterknife/数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44050385/