应用程序模块化后,引用的方法计数增加

问题描述 投票:8回答:1

AS:3.5.3; Android Gradle插件:3.5.0;摇篮:5.6.2;

我们在将“应用程序”模块拆分为几个小模块后,发现应用程序中引用的方法数量急剧增加。但是奇怪的是,每个类所引用的方法的添加量少于Android Apk分析器工具中提到的总数。

出于测试目的,我已将WebActivity.class从“ app”模块移至“ adapters”模块,并且引用的方法计数增加了181个方法。

总结:

app / WebActivity = 63546实际引用的方法,但显示65394方法。adapter / WebActivity = 63543实际引用的方法,但显示65575方法。

我们添加/拆分了4个新模块后,[观察到的'引用方法计数'增加了近1万。

确切的问题是什么?

应用程序模块化如何能够大大增加引用方法的数量?

以下是我截取的两个不同APK的屏幕截图,只是WebActivity从'app'模块移至'adapter'模块,并增加了181种引用方法:

“应用”模块中的WebActivityenter image description here

将WebActivity移动到“适配器”模块enter image description here

在屏幕截图中,为什么每个类添加的引用方法(用红色标记)不等于Apk Analyzer中给出的总数?

android android-studio apk modularization
1个回答
0
投票

我已经阅读了很长时间的代码性能和调整参数。实际上,Android程序是我的重点之一。

首先介绍可以帮助我们达成解决方案的基本或最重要的概念。

Android Developer所述

模块可以独立构建,测试和调试

因此,模块具有自己的Gradle&Dependencies。您可以在项目Hierarchy Viewer中进行探索。

事实上,模块化强调维护很重要。不同于性能问题。因此,模块化具有以下重要影响:

  • 增加继承深度

这里是我为清楚起见绘制的图表。如您所见。使用离散模块时,为了调用方法A,与没有离散模块的2N micro secs相比,有N micro secs

enter image description here

这个问题我想到了参考方法计算与继承深度有关的内容吗?

答案是,虽然使用模块化会增加引用方法。但是,它实际上并没有影响应用程序的性能,主要的问题是继承深度

,在大多数情况下,该问题是ignorable。] >

我确实强调模块化中引用方法的增加归因于每个模块的Gradle和依赖项

应用程序模块化如何增加引用方法的数量如此之高?

影响APK分析器的重要条件参考方法

还请注意,缩小和缩小代码也可以在源代码为编译。

除了上面的官方声明,我还要添加另一个条件,其中影响APK分析器开发人员在模块化方面有多少经验?

例如:模块化就像是一个[[architecture(developer)
定义应该在哪里的厨房,应该在休息室的地方以及在WC的地方的家。如果架构决定将WC和Kitchen结合在一起怎么办?是的,这是一场灾难。如果开发人员经验不足,则可能在模块化时发生。结论

    我希望您能找到为什么增加了引用方法,以及为什么在某些情况下可能会急剧增加。
  • 模块具有其Gradle和依赖性,并且模块化程度不断提高模块。因此,这些方法参考。

  • 模块化实际上会影响应用程序的性能,但是可以忽略您的应用维护效果更好。
  • 开发人员在模块化方面的经验也对最终结果。

  • 重要提示:

  • 几乎所有陈述都是我的调查和研究。实际上,可能会有错误和错误,并且会进行更新以在将来添加更多信息。
    © www.soinside.com 2019 - 2024. All rights reserved.