如何减小apk的大小

4

我的资源和可绘制文件只有2MB,Java和XML源码只有1MB,但是构建项目后,APK大小为20MB!

我设置了shrinkResources为true,并删除了未使用的资源,还用proguard生成了应用程序。

有没有办法减小APK的大小?


1
https://developer.android.com/topic/performance/reduce-apk-size.html - Harry
你使用了哪些库? - fillobotto
减少库的使用 - sanidhya pal
仅为ARM部署您的应用程序。 - NutCracker
你正在使用哪些库? 使用矢量图像而不是多个png。 使用Android Studio的APK分析器检查你的APK。 - gouri panda
5个回答

3
Android Studio有自己的APK分析工具,对于像您这样的情况非常有用。分析您的APK文件并检查使用了这么多空间的文件。
此外,使用ProGuard可以帮助减小APK的大小。另外,避免使用不必要的库。例如,如果您需要使用Google Analytics,请仅导入gradle的分析库,如下所示: https://developer.android.com/studio/build/apk-analyzer.html enter image description here
compile 'com.google.android.gms:play-services-analytics:10.2.4'

请勿这样使用:

compile 'com.google.android.gms:play-services:10.2.4'

第二个例子使用了过多的空间和冗余的类和文件。

1

在你的Gradle中,通常调试APK的大小比发布APK大约多50%。如果您关心调试大小,请在调试配置上执行与发布相同的配置。

buildTypes {
        release {
            minifyEnabled true  <-- minify your code
            shrinkResources true <-- remove any unused resources
            zipAlignEnabled true <-- optimization
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  <-- enable proguard is important to shrink byte code
        }
    }

其次,如果您正在使用Google服务依赖项,请使用单独的依赖项.. 参见此处。在Android Studio 2.2及以上版本中,他们已经在Build菜单中添加了APK分析工具。使用它来分析APK。

不仅适用于Google服务,其他库也是如此。有些库将Android设计或AppCompat放入其库中。因此,如果您已经在依赖项中拥有这些模块,则需要排除它们。


0

请查看我的博客减小apk大小的不同方法

主要点如下:

  • android.enableR8=true // 启用新的R8代码缩小器
  • minifyEnabled true && 添加Proguard规则
  • 使用Android Studio的APK分析器检查您的APK
  • 启用资源缩小
  • 将PNG、JPEG和BMP转换为WebP
  • 避免枚举,使用@IntDef注释
  • 使用aaptOptions { cruncherEnabled = false } 压缩图像
  • 使用Android Studio内置的Remove Unused Resources功能删除应用程序中所有未使用的资源
  • 使用Android Studio内置的Code Cleanup功能进行清理

注意:去启用它!(*之后请仔细检查一切是否正常)


0

您可以执行以下操作:

  • 删除不必要的库,即使用所需的库(例如单独使用地图或GCM,而不是完整的Play服务库)

  • 使用矢量图像而非多个PNG文件。

  • 在构建文件中使用zipAlignEnabled命令。


0
根据Android文档中的“资源缩小”网页(此处),您可以通过使用以下代码行在build.gradle文件中来最小化应用程序的大小:
    android {
    ...

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接