android-studio - 混淆 + Butterknife/数据绑定(bind)

标签 android-studio android-gradle-plugin android-databinding butterknife

我目前使用 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/

相关文章:

android - 如何在gradle中添加项目级别的依赖项

java - 无法合并Dex Android

android-studio - 导入 Sceneform Assets 不会生成 .sfa 和 .sfb 文件

Java/Android工作室: For loop - Same data shows multiple times

java - 如何使用其他项目的共享库模块在 Android Studio 中运行应用程序?

android - 未知数据绑定(bind)属性 : onLongClick - Attribute exists and works

android - 如何在 Android Studio 3.0.0 中使用数据绑定(bind)和 Kotlin

java - 错误 : cannot find symbol class DataBindingComponent

android - 将下拉列表微调器添加到alertdialog Android Studio

android-studio - Windows 10 中的 adb.exe 位于哪里?