gpt4 book ai didi

android - 从 Play 服务单体中过滤资源以使您的 APK 更小

转载 作者:IT老高 更新时间:2023-10-28 23:33:33 25 4
gpt4 key购买 nike

关于 Google Play 服务的整体性以及为何应将其拆分为更多库的文章已经很多。目前,保持 APK 较小的解决方法是使用 proguard 去除未使用的引用。这对于 classes.dex 非常有效,但不适用于包含的资源。

我获得了大约 1 MB 的额外未使用资源,并且使用 bundle 的 Android Wear 应用程序,这个开销翻了一番。所以我的 APK 比需要的大 2 MB。

我想知道 Gradle 中是否有一些直接的方法可以从生成的 APK 中排除来自依赖项 AAR 的一些资源。

看来the AAPT options in the Gradle Android plugin only allow filtering assets .

我正在考虑 Hook 一些自定义 aapt 脚本,该脚本会在签署 APK 以供发布之前调用 remove 以获取使用 aapt 的资源列表。

其他人有更简单的解决方案吗?

最佳答案

经过一些研究,我发现了以下次优解决方案。我必须手动列出所有不需要的资源(幸运的是模式适用),并确保删除所有引用它们的文件。下面是一个示例,它使我的 Wear 应用 APK 从 1.5 MB 变为 300kb,并且 APK 可以正常工作,没有问题。

我必须创建自己的任务 stripResources 并将其挂接到标准 Android 插件任务:mergeReleaseResourcesprocessReleaseResources

task stripResources << {
println "Custom resource stripping in: $buildDir"
delete fileTree(dir: "$buildDir", include: "**/layout/confirmation_activity_layout.xml")
delete fileTree(dir: "$buildDir", include: "**/layout/watch_card_content.xml")
delete fileTree(dir: "$buildDir", include: "**/common_signin*.png")
delete fileTree(dir: "$buildDir", include: "**/drawable/common_signin*.xml")
delete fileTree(dir: "$buildDir", include: "**/generic_confirmation*.png")
delete fileTree(dir: "$buildDir", include: "**/drawable/confirmation_*.xml")
delete fileTree(dir: "$buildDir", include: "**/drawable/card_background.xml")
delete fileTree(dir: "$buildDir", include: "**/card_frame*.png")
delete fileTree(dir: "$buildDir", include: "**/go_to*.png")
delete fileTree(dir: "$buildDir", include: "**/drawable/go_to_*.xml")
delete fileTree(dir: "$buildDir", include: "**/ic_plusone*.png")
delete fileTree(dir: "$buildDir", include: "**/powered_by_google*.png")
// if you only have English you can teh following to filter out some GPS texts wich also take few hundreds of kb
// delete fileTree(dir: "$buildDir", include: "**/values-*/values.xml")
}

tasks.whenTaskAdded { task ->
if (task.name == 'processReleaseManifest') {
task.dependsOn stripResources
}
}

您可以对常规的 Android APK 执行类似的任务。

关于android - 从 Play 服务单体中过滤资源以使您的 APK 更小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com