【发布时间】:2018-11-21 23:15:21
【问题描述】:
我和父亲一起制作了一个小应用程序,然后我们将它发布到了 google play 商店,将它下载到我的手机后,我发现该应用程序占用了 13.5MB(apk 大小为 4.5mb 或大约 5mb 全尺寸)
多余的空间是从哪里来的?有没有办法让它变小?
我已经尝试使用 minifyenabled 使 classes.dex 更小,但这似乎会使应用程序崩溃
【问题讨论】:
标签: android google-play
我和父亲一起制作了一个小应用程序,然后我们将它发布到了 google play 商店,将它下载到我的手机后,我发现该应用程序占用了 13.5MB(apk 大小为 4.5mb 或大约 5mb 全尺寸)
多余的空间是从哪里来的?有没有办法让它变小?
我已经尝试使用 minifyenabled 使 classes.dex 更小,但这似乎会使应用程序崩溃
【问题讨论】:
标签: android google-play
...有什么办法让它变小吗?
我已经尝试使用 minifyenabled 使 classes.dex 更小,但这似乎会使应用程序崩溃。
这是我的 2 美分。可以有多种方法来减小大小。
您可以使用minifyEnabled,正如您所提到的。但是,您需要
指定 ProGuard 以排除 ProGuard 配置中的某些文件
文件。引用Shrink Your
Code的文档:
要使用 ProGuard 启用代码压缩,您需要将
minifyEnabled true添加到您的 build.gradle 文件。 但是,务必在用于测试的最终 APK 上启用代码收缩,因为 如果您这样做可能会引入错误 没有充分自定义要保留的代码。
引用Customize which code to keep 关于要保留哪些文件的同一文档的部分:
在某些情况下,默认的 ProGuard 配置文件 (proguard-android.txt) 就足够了,并且 ProGuard 会删除所有文件——并且 仅 - 未使用的代码。但是,很多情况都很难 ProGuard 可以正确分析,它可能会删除您的应用程序的代码 实际需要。可能会错误删除的一些示例 代码包括:
- 当您的应用仅从 AndroidManifest.xml 文件中引用一个类时
- 当您的应用从 Java 原生接口 (JNI) 调用方法时
- 当您的应用在运行时操作代码时(例如使用反射或自省)
您可以使用最新版本的App Bundles 来减小大小。例如:而不是安装包含所有密度hdpi、xhdpi 的所有资产的 apk,它将动态地仅包含特定设备所需的资产,从而大大减少了应用程序的大小。来自文档:
通过仅安装大多数受众使用的功能来进一步减小应用的大小。然后,通过 Dynamic Delivery,用户可以在需要时下载和安装动态功能。
【讨论】:
类似的问题 how to bring Hello World Android app size down 如果您阅读 cmets 会得出这样的结论:How to stop using AppCompat in Android Studio?
因此,根据您的最低 SDK 级别,如果您的目标是让您的应用尽可能小,您应该考虑移除 AppCompat 库。
【讨论】: