Multidexing android应用程序的缺点

adn*_*ran 21 performance android dalvik

最近我读到了有关Dalvik 65K方法限制的内容.我已经知道方法调用列表只能调用第一个65536方法引用.为解决这个问题,我们提供了许多解决方案.其中一个是多索引,我们通过使用android的支持库将.dex文件拆分为多个类[classes.dex,classes1.dex ...].

我无法理解的是,由于这种多重索引,Android应用程序有什么缺点,为什么我们应该花费大量精力来减少引用方法的数量.

基本上在我的理解中,为了减少方法计数,我必须减少模块化,这使得我的代码可读性降低,从而消除了在删除第三方库代码时消耗的小时数.减少方法计数值得吗?

Aka*_*ava 24

您正在考虑使用multidex,而应该通过分析应用程序来观察并确定应用程序是否存在任何性能问题.

多索引几乎不会增加任何大小的代码,主要的大小和性能问题是动画/图像/音频/视频资源,他们是增加大小和降低性能的人.

包括许多第三方库最终将通过64k限制,并且今天几乎所有应用程序都是多索引的,用户今天需要多功能应用程序,这需要与许多第三方库集成.

只有当你进行速度最重要的动画/游戏编程时,更多的方法调用可能是有害的,但这与多索引无关,即使写得不好的小型非多索引应用程序也会在任何设备上执行不良操作.

启动时间将影响多索引,但通过更改应用程序逻辑以延迟加载其他昂贵的库和资源,肯定可以改善它.

减少方法计数值得吗?

没有

理想情况下,您应该使用更多方法并模块化您的代码,因为测试和更改移动应用程序是一个巨大的挑战.调试和删除错误比multidex大小及其对性能的影响更昂贵.由于屏幕较小,品牌不同,用户界面不同,用户对手机上的应用程序比计算机更加生气.如果将代码划分为多个单独的测试库,则可以更轻松地满足用户需求.


Jes*_*eke 6

主要缺点是较大的dex/apk大小.Dex文件具有在该dex文件中的所有类之间共享的常量池.当类跨多个dex文件分割时,这些共享常量必须在它们所使用的每个dex文件中重复.

  • 所以你的意思是说 android 应用程序没有运行时缺陷。具有多个 dex 类的 android 应用程序将与只有一个类的应用程序完全相同。除了在 APK 大小方面做出妥协之外,在设备中的应用程序方面没有任何其他方面的妥协。撇开开发阶段的缺点。 (2认同)