【问题标题】:Apk size supporting multiple screen densities in Android在 Android 中支持多种屏幕密度的 Apk 大小
【发布时间】:2016-08-19 04:45:52
【问题描述】:

我正在开发一个支持以下密度的 Android 应用程序:ldpi、mdpi、hdpi 和 xhdpi。我将图像存储在每个文件夹中,并根据密度进行放大。我的问题是我的APK大小约为100 MB,我猜四个资源文件夹的图像加起来了。

有什么办法可以减小这个 APK 文件的大小?当我尝试上传我的应用程序以测试应用内计费时,Google Play 的 APK 限制为 50 MB,因此无法上传。

为什么用户需要从其他资源文件夹下载包含他们永远不会使用的图像的 APK?有什么想法吗?

【问题讨论】:

  • 100MB?真的吗?你必须有大量的图像!我首先要看的是压缩——你能通过更多的压缩来解决吗?
  • 如果您已经将图像压缩为 24 位 png 并且仍然有如此巨大的 apk,那么最好从 ldpi 和 hdpi 中删除资源。只保留 mdpi 和 xhdpi 的资源。对于 ldpi 和 hdpi,来自 mdpi 的图像资源将被 Android 放大或缩小。与 xxhdpi 一样,xhdpi 的资源将按比例增加。当然,您的 apk 大小会减小,并且 UI 可能需要在布局文件中进行细微调整。

标签: android apk android-resources


【解决方案1】:

为什么不使用expansion file?或者尝试压缩数据。

【讨论】:

    【解决方案2】:

    2015 年 9 月 Play 商店 has been increased to 100 MB 的最大限制,如果您需要更多空间,您可以添加最多两个 2 GB expansion files,但实施起来有点棘手。

    从 2016 年 7 月开始,当您上传应用时,Google Play 只会下载 APK 中发生变化的部分,从而减少数据消耗。

    如果您认为您的问题是由资源引起的,为什么不检查drawable-<density> 文件夹的大小,只是为了准确了解每个密度占用了多少空间?

    在任何情况下,如果您仅包含低分辨率资源,在高分辨率设备上它们将被放大,看起来模糊,而如果您仅包含高分辨率资源,它们将在低分辨率设备上缩小,增加运行时OutOfMemoryErrors 的风险。在您的情况下,一个好的方法可以是仅包含 mdpixhdpi 资源:然后,ldpi 将从 mdpi 缩放,hdpixhdpi 缩放。

    同时检查您是否可以用9-patches 或更好的SVGs 替换您的一些资源。

    最后一个解决方案是为不同的密度(和屏幕尺寸)提供不同的 APK,如 here 所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      相关资源
      最近更新 更多