【发布时间】:2023-04-11 11:20:01
【问题描述】:
使用apkanalyzer 可以从生成的 APK / AAB 中找出大量属性,例如文件大小、与另一个 APK 比较以获得文件大小增量等。
使用这个工具我创建了几个 Gradle 任务来:
- 获取特定的依赖项大小,并将它们相加以了解 SDK 的大小;
- 获取APK的下载大小,使用
apkanalyzer; - 使用
apkanalyzer获取 APK 的比较文件大小,与空应用比较,以了解 SDK 大小;
现在,我真正需要的是找出 APK 的实际安装大小。意思是 APK 在设备上安装后占用的存储量。我发现apkanalyzer 没有为此提供解决方案,并且不知道如何解决这个问题。我不想手动执行此操作,而是必须自动化。最好通过 Gradle 任务。
那么:如何最好使用 Gradle 自动计算 APK 的安装大小?
【问题讨论】:
-
APK 的“安装大小”不确定。它至少会因操作系统版本而异,我不能排除它因设备型号而异(由于制造商的修补)。根据您对“APK 的安装大小”的定义,它也可能随时间而变化,因为 AOT 和类似的优化器会起作用。对于 AAB(如您的问题标题中所述),“安装大小”将因设备型号而异并通过用户设置,因为 AAB 会生成任意数量的 APK,代表要安装的应用程序。
-
这是有道理的。它不必非常精确。假设有一个参考模拟设备 Pixel 4,Android 12 安装了 APK。我想通过 gradle task --> adb --> installed APK size 知道。同时我找到了这个解决方案android.stackexchange.com/questions/220442/…,但对我不起作用:
line 23: [: 1: unary operator expected -
您可以将该 shell 脚本翻译成 Groovy/Kotlin 以用于 Gradle 任务。请注意,它假定应用程序已安装——这是否满足您的需求?通常,当我想到 Gradle 任务时,它是用于应用安装之前的东西。
-
你是对的。但是,这是 CI 的一部分,我们想计算每个版本的 SDK 大小。最后的 gradle 任务是 1) 在参考设备上安装,在这种情况下是模拟设备,2) 确定安装大小,最后 3) 在我生成的报告中包含此信息。