【问题标题】:How to reduce and compress an apk file in android如何在android中减少和压缩apk文件
【发布时间】:2018-01-04 14:37:51
【问题描述】:

我有一个 apk 文件,但文件大小为 22.4 MB。它很大,所以我需要减少或压缩android中的apk文件。减小和压缩apk文件大小的正确方法是什么?

【问题讨论】:

  • 您是否在 APK 中使用过图片
  • 您能解释一下它是如何包含 22.4 MB 的吗?
  • apk 就像 zip 文件。如果您将 .apk 更改为 .zip,您可以将其解压缩。因此,如果您需要更小的大小,您应该从文件或资产中删除 .mp3 或 .png 或 ... .因为资产中的文件原样变成apk
  • 为了减少您需要从可绘制文件夹中删除不必要的图像 不必要的资产或资产文件夹中的任何文件 您需要删除未使用的文件 最重要的使用具有适当尺寸和大小的图像 不要使用非常高的像素化图像在项目中它会自动减小你的 apk 的大小

标签: android


【解决方案1】:

您可以压缩 APK 文件(rar、zip),但必须解压缩才能工作。

如果 apk 文件太大,可以分发:

  1. 使用扩展文件:http://developer.android.com/google/play/expansion-files.html
  2. 创建多个版本的 apk:http://developer.android.com/google/play/publishing/multiple-apks.html(例如,没有用于 ldpi 设备的 hdpi 文件)
  3. 使用ProGuard

    ProGuard 是一个免费的 Java 类文件收缩器、优化器、混淆器, 和预验证。它检测并删除未使用的类、字段、 方法和属性。它优化字节码并删除未使用的 指示。它重命名剩余的类、字段和方法 使用无意义的短名称。最后,它预先验证处理过的 Java 6 或更高版本或 Java Micro Edition 的代码。

    如果您使用 Eclipse,默认配置文件将自动添加到您的项目中。但此默认配置仅涵盖一般情况,因此您很可能必须根据自己的需要对其进行编辑。

  4. 移除未使用的资源:@​​987654324@

  5. 使用9patchpng optimizers 等工具优化图像
  6. 删除仅用于调试目的的所有内容(调试类,甚至是 Log() 方法)。还可以尝试删除不必要的 .so 文件

【讨论】:

  • You can compress an APK file (rar, zip), but it has to be decompressed in order to work 如果您能与我们分享如何做到这一点,那就太好了。如果能做到这一点,将大大减少 APK 文件的大小。
  • @user1995781 这仅适用于传输和/或存储 APK 文件,例如您可以将 apk 存档,在您的网站上作为下载提供,用户必须在其设备上手动解压缩 APK 才能安装它。
  • 您可以使用AndResGuard 帮助您减小api大小。
【解决方案2】:

您可以ZipAlign签名的apk进行压缩。

用法:

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

示例:

D:\android-sdk\android-sdk\tools>zipalign -f -v 4 "C:\Users\Joisar\Desktop\project_name\appname_signed.apk" "C:\Users\Joisar\Desktop\project_name\appname__zipaligned.apk"

注意:

请通过以下命令检查 apk 是否为 zipaligned,如果不是 zipalign,则执行此操作。

zipalign -c -v 4 "C:\Users\Joisar\Desktop\project_name\appname_signed.apk"

【讨论】:

  • 请注意,如果您使用 eclipse 导出 APK,这已经完成了。
  • 我有同样的信念,但我想这并非一直都是如此。因为当我检查它以确认时,我得到了否定的回应。
  • 嗯,很高兴知道。我猜 Eclipse 并不真正喜欢一致性。 Android Studio 即将推出。
  • @Mdlc:是的。但由于 Studio 仍处于测试阶段。我急切地等待更稳定的版本可以依赖。
【解决方案3】:

找出问题

您可以在 Android Studio 中分析 APK。这向您显示了它们目录中的各种文件及其大小,包括绝对的和相对于整个 APK 的大小:

Check for Unused Resources

这是最简单的: 向您显示未使用的资源等:

只需将它们从您的项目中删除即可。

使用矢量图像

Vector Drawables 为所有分辨率提供一个清晰的图像,大大减小了图形的大小。通常,您可以将它们用于图标等,但不能用于照片。可以使用trimage 缩小非矢量化图像。

proguard 缩小

将以下内容添加到 app/build.gradle 以启用 proguard 以减少项目中未使用的类:

buildTypes {
    release {
      minifyEnabled true
      shrinkResources true
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    }
}

【讨论】:

    【解决方案4】:
    1. 使用 .svg 格式的图标集。
    2. 压缩 PNG。
    3. 仅使用特定的 Google Play 服务库。
    4. 使用 Proguard

      build.gradle

      android {
          ...
          buildTypes {
              release {
                  minifyEnabled true
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
              }
          }
      }
      
    5. 收缩资源

      build.gradle

      android {
          ...
          buildTypes {
              release {
                  shrinkResources true
                  minifyEnabled true
                  ...
              }
          }
      }
      

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 2013-10-17
      • 2013-07-25
      • 1970-01-01
      • 2016-08-23
      • 2011-07-16
      • 2014-02-10
      • 2023-02-23
      • 2012-01-14
      相关资源
      最近更新 更多