- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
AS:3.5.3; Android Gradle 插件:3.5.0; Gradle :5.6.2;
在将“app”模块拆分为几个小模块后,我们观察到在我们的应用程序中引用的方法数量急剧增加。但奇怪的是,每个类所引用的方法的增加量都少于Android Apk Analyzer Tool中提到的总数。
出于测试目的,我已将 WebActivity.class 从“app”模块移动到“适配器”模块,并且引用的方法计数增加了 181 个方法。
总结:
应用程序/WebActivity = 63546 实际引用的方法但显示 65394 方法。
适配器/WebActivity = 63543 实际引用的方法但显示 65575 方法。
我们有 添加/拆分 4 个新模块后,观察到“引用方法计数”增加了近 10k。
确切的问题是什么?
应用程序模块化如何将引用的方法数量大幅增加到如此之高?
以下是我对两个不同 APK 截取的屏幕截图,唯一的区别是 WebActivity 从“app”模块移动到“适配器”模块,并增加了 181 个引用方法:
'app' 模块中的 WebActivity
将 WebActivity 移至“适配器”模块
在截图中,为什么每个类(用红色标记)添加的引用方法与 Apk Analyzer 中给出的总数不相等?
最佳答案
我一直在阅读有关代码性能和调优参数的文章。确实,Android 程序是我的重点之一。
让我们首先介绍帮助我们找到解决方案的基本或最重要的概念。
如 Android Developer有说明
module can be independently built, tested, and debugged
Hierarchy Viewer
中探索它.
2N micro secs
与
N micro secs
相比没有分立模块。
How app modularization can increase the referenced method count drastically so high?
Also note that minification and code shrinking can each also considerably change the contents of a DEX file after source code is compiled.
Why would separate Gradle add to the referenced method count? And for separate dependency, if the final result is single APK then I do not think duplicate dependencies in 'app' and feature module would add to referenced method count.
.dex
文件包括:
.dex
总集成依赖项的文件 .dex
s .dex
文件是
的整合所有模块gradle
APK
s 具有相同的结果,但引用方法计数不同。
1.7k
的空 Activity 非常高的引用方法计数差异取决于它们的功能。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.2.0-alpha01'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4'
}
1.7k
引用方法计数的差异。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation project(path: ':module')
}
major concern is why addition of individually referenced method count is different than total referenced method count in Apk Analyzer?
.dex
文件引用方法计数等于每行引用方法计数的总和,但如果您多选
.dex
files ,您将看到 SUM 和实际计数的差异,因为分析器首选过滤它们的引用中的相等性。
.dex
文件然后分析器过滤器相等。
in our project we are using centralized dependencies.gradle file so there is not chance of different version. So, do you think even if we have same/exact set of dependencies and their versions in feature modules, it will increase referenced method count?
5.1k
在引用方法计数中
即使我有
集中依赖 !!!!!!
.jar
文件在
libs
项目目录。正如您所看到的那样简单,我影响了最终结果。
And why there is no difference in referenced method count when I compile only 'app' module by disabling parallel compilation? It should have decreased as only 'app' module's dependencies would have been used, right?
关于android - 应用模块化后引用的方法数量增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59489702/
我是一名优秀的程序员,十分优秀!