- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
关于 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 插件任务:mergeReleaseResources
和 processReleaseResources
。
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/
现在我需要确切地知道如何在需要时立即部署基于微服务的后端?我可以自己管理所有技术的集成,但是在 AWS 上托管时,我不可能获得这么多实例,而且现在也买不起。 我正在考虑从单一后端开始的想法,同时有可能
我有一个使用 spring 3.1 和 spring-security 3.1 以及 Java 7 开发的整体式 Spring Web 应用程序,并将其部署在 tomcat 7 上。 现在我有一个新要
在他的Monad Reader article on Hoogle第 33 页,Neil Mitchell 提倡将 Haskell 项目捆绑到一个具有多种模式的可执行文件中。 (仅供引用,Neil M
我有一个单进程有 5 个线程的单体应用程序。每个线程完成某些特定任务。考虑使用 docker 将此应用程序移动到微服务。如果我看一下架构,每个工作线程都会变成一个 docker 进程。因此,在某种程度
我知道有人问过很多类似的问题,但我还没有看到对链接和管理样式的所有三种可能方法的比较。哪个是浏览性能最好和最差的?我知道 推荐超过@import因为它允许并行下载,但我也听说单个大型 CSS 优于 正
多年来,我的目标是从 ASP/VBScript 转向“更好”的语言——我的偏好是 C#,因为我有 C 技能——但我也会考虑其他语言(包括 PHP 等,所以不仅仅是 DotNet ) 目标是使用一种对我
我是一名优秀的程序员,十分优秀!