如何在 Android Studio 中使用 gradle 任务获取依赖项大小?
How to get dependencies size with gradle task in Android Studio?
我需要创建一个在执行时显示每个依赖项大小的任务。
我已经搜索了一种方法,最接近的答案是 this 但是,此解决方案似乎仅适用于非 Android 项目。
我目前正在使用 tools.build:gradle:3.4.2 和 gradle 插件android5.1.1
我想要一些东西来列出每个依赖项和大小,例如:
- Retrofit 2.5.0 ------ 654 KB.
- Butterknife 10.1.0 -- 150 KB.
我试图实现我之前链接的要点,但它总是说:
ERROR: Cannot change strategy of configuration ':app:androidApis' after it has been resolved.
删除一段代码后用于多个配置:
ERROR: Cannot change strategy of configuration ':app:default' after it has been resolved.
此时我不知道要在配置中放什么...
您需要将 here 提到的脚本放在 project.afterEvaluate{}
中,例如
project.afterEvaluate {
tasks.create("depsize") {
listConfigurationDependencies(configurations.default)
}
tasks.create("depsize-all-configurations") {
configurations.each {
if (it.isCanBeResolved()) {
listConfigurationDependencies(it)
}
}
}
}
def listConfigurationDependencies(Configuration configuration) {
def formatStr = "%,10.2f"
def size = configuration.collect { it.length() / (1024 * 1024) }.sum()
def out = new StringBuffer()
out << "\nConfiguration name: \"${configuration.name}\"\n"
if (size) {
out << 'Total dependencies size:'.padRight(65)
out << "${String.format(formatStr, size)} Mb\n\n"
configuration.sort { -it.length() }
.each {
out << "${it.name}".padRight(65)
out << "${String.format(formatStr, (it.length() / 1024))} kb\n"
}
} else {
out << 'No dependencies found';
}
println(out)
}
然后运行下面的命令你会打印尺寸。
$ ./gradlew depsize
例如我的输出如下:
Configuration name: "minApi16ReleaseRuntimeClasspath"
Total dependencies size: 2.90 Mb
appcompat-v7-26.1.0.aar 980.85 kb
support-compat-26.1.0.aar 621.42 kb
recyclerview-v7-26.1.0.aar 335.80 kb
support-media-compat-26.1.0.aar 304.53 kb
support-core-ui-26.1.0.aar 227.63 kb
support-fragment-26.1.0.aar 160.75 kb
constraint-layout-solver-1.0.2.jar 93.32 kb
support-core-utils-26.1.0.aar 85.11 kb
constraint-layout-1.0.2.aar 37.28 kb
animated-vector-drawable-26.1.0.aar 34.33 kb
support-vector-drawable-26.1.0.aar 30.74 kb
support-annotations-26.1.0.jar 24.13 kb
common-1.0.0.jar 12.08 kb
common-1.0.0.jar 10.89 kb
runtime-1.0.0.aar 9.38 kb
support-v4-26.1.0.aar 3.01 kb
参见:https://gist.github.com/medvedev/968119d7786966d9ed4442ae17aca279#gistcomment-3003945
[此站点不再有效]我已经启动了一个新网站来执行此操作。我希望为所有图书馆建立一个索引。第一次查找会很慢,但后续查找会更快。请查看位于 droidanalyser.tools
的网站
我需要创建一个在执行时显示每个依赖项大小的任务。
我已经搜索了一种方法,最接近的答案是 this 但是,此解决方案似乎仅适用于非 Android 项目。
我目前正在使用 tools.build:gradle:3.4.2 和 gradle 插件android5.1.1
我想要一些东西来列出每个依赖项和大小,例如:
- Retrofit 2.5.0 ------ 654 KB.
- Butterknife 10.1.0 -- 150 KB.
我试图实现我之前链接的要点,但它总是说:
ERROR: Cannot change strategy of configuration ':app:androidApis' after it has been resolved.
删除一段代码后用于多个配置:
ERROR: Cannot change strategy of configuration ':app:default' after it has been resolved.
此时我不知道要在配置中放什么...
您需要将 here 提到的脚本放在 project.afterEvaluate{}
中,例如
project.afterEvaluate {
tasks.create("depsize") {
listConfigurationDependencies(configurations.default)
}
tasks.create("depsize-all-configurations") {
configurations.each {
if (it.isCanBeResolved()) {
listConfigurationDependencies(it)
}
}
}
}
def listConfigurationDependencies(Configuration configuration) {
def formatStr = "%,10.2f"
def size = configuration.collect { it.length() / (1024 * 1024) }.sum()
def out = new StringBuffer()
out << "\nConfiguration name: \"${configuration.name}\"\n"
if (size) {
out << 'Total dependencies size:'.padRight(65)
out << "${String.format(formatStr, size)} Mb\n\n"
configuration.sort { -it.length() }
.each {
out << "${it.name}".padRight(65)
out << "${String.format(formatStr, (it.length() / 1024))} kb\n"
}
} else {
out << 'No dependencies found';
}
println(out)
}
然后运行下面的命令你会打印尺寸。
$ ./gradlew depsize
例如我的输出如下:
Configuration name: "minApi16ReleaseRuntimeClasspath"
Total dependencies size: 2.90 Mb
appcompat-v7-26.1.0.aar 980.85 kb
support-compat-26.1.0.aar 621.42 kb
recyclerview-v7-26.1.0.aar 335.80 kb
support-media-compat-26.1.0.aar 304.53 kb
support-core-ui-26.1.0.aar 227.63 kb
support-fragment-26.1.0.aar 160.75 kb
constraint-layout-solver-1.0.2.jar 93.32 kb
support-core-utils-26.1.0.aar 85.11 kb
constraint-layout-1.0.2.aar 37.28 kb
animated-vector-drawable-26.1.0.aar 34.33 kb
support-vector-drawable-26.1.0.aar 30.74 kb
support-annotations-26.1.0.jar 24.13 kb
common-1.0.0.jar 12.08 kb
common-1.0.0.jar 10.89 kb
runtime-1.0.0.aar 9.38 kb
support-v4-26.1.0.aar 3.01 kb
参见:https://gist.github.com/medvedev/968119d7786966d9ed4442ae17aca279#gistcomment-3003945
[此站点不再有效]我已经启动了一个新网站来执行此操作。我希望为所有图书馆建立一个索引。第一次查找会很慢,但后续查找会更快。请查看位于 droidanalyser.tools
的网站