如何减少App(.apk)大小

时间:2010-09-28 17:08:16

标签: android

帮助!

当我在手机上安装我的应用程序进行测试时,它显示为一个巨大的大小,11.35 MB 。这是一个非常简单的应用程序,允许用户浏览有趣的事实。我能想到的唯一原因是,drawable中有14个JPEG文件作为fun-facts的背景图像。这些平均大小约为500 KB。

我想调整应用的大小,以免耗尽用户设备上的宝贵资源。除了摆脱图片,有没有办法优化apk文件的大小?

编辑:图片是我使用Android手机拍摄的照片。

23 个答案:

答案 0 :(得分:33)

其他答案提到缩小的图像。您也可以考虑尝试ProGuard缩小字节码。关于将ProGuard应用于Android应用程序的Here's an article

答案 1 :(得分:23)

我建议您尽可能压缩.jpg个文件,这会大大减少.apk文件的大小。诸如Paint.NET之类的免费工具可以帮助您完成此任务。它有很好的调整大小选项。

答案 2 :(得分:13)

确保您的jpg没有以超过必要的更高分辨率存储。一部漂亮的Android手机屏幕分辨率为1920x1200或2560x1440(约2015年) 800 x 480 ,因此您的背景不应包含任何比这更多的像素(除非您的应用支持某种缩放)。还有背景照片吗?如果没有,您可能会发现使用像svg这样的基于矢量的图像格式,或者使用像gif这样的动态调色板的图像格式,将会进一步减小文件大小。

答案 3 :(得分:11)

<强>更新

随着支持库23.2的推出,现在您可以用SVG(无w /或无动画)替换许多Image资源,以进一步减小apk大小。

<强> ORIGINAL

这可能是一个迟到的回复,但可能对将来的用户有所帮助。

请参阅此link。 为了总结该页面,它提到了以下关键点,这将有助于减少总体上的apk大小:

  • 使用 ProGaurd
  • 删除应用中的所有调试信息(Log.i()等语句)。它们可以包装在仅在测试应用程序时启用的条件下。
  • 使用推荐的媒体格式
    • 图片:PNG或JPG
    • 音频:AAC
    • 视频:H264 AVC
  • 使用OptiPNGPNGCrush
  • 压缩图片
  • 使用9patch 缩放图片
  • 查找未使用的资源,使用此tool删除
  • 避免使用多个资源来实现相同的功能。资源不仅限于图像,还扩展到API。有时,单个API可以提供多个结果,而不是使用两个或三个不同的API。重复的字符串和资产也是浪费空间。

答案 4 :(得分:6)

除了优化图像之外,我还发现验证您使用的支持库很有用。我有一个相对简单的应用程序,目标平台API&gt; = 10,仍然我的APK最终为2.2M,或使用ProGuard后,1.4M。当我查看APK时,代码是1.5M并且包含了很多其他资源(abc_ *)我对此一无所知。

然后我发现了这个:https://developer.android.com/tools/support-library/features.html

原来我不需要appcompat-v7,只需支持-v4,并且对我的依赖项进行此更改会将APK大小减小到1.7M(使用ProGuard时为0.9M)。 可以理解的是,支持库带有很多额外的(代码和资源),所以确保只使用你需要的那些可能有帮助。

(即使-0.5M对于一个11M的应用程序来说并不重要,我在这里发布这个是因为我在搜索解决方案时一直在这个页面上结束......)

答案 5 :(得分:4)

转换为WebP,这将大大减小应用程序的大小

它已将我的应用的应用大小从40 mb减小为25 mb

步骤:

  • 右键单击res
  • 转换为WebP

功能:它将大小从png减小为WebP格式。质量也不会被破坏


enter image description here

答案 6 :(得分:4)

  • 使用tinypng压缩项目的png或 jpg格式的图像文件,可以大大减小图像的大小 不损失图像质量;
  • 有些图像使用tinypng压缩可能会失真,可以转换为 这些图像为webP格式,请使用智图iSparta可以将其他格式转换为webP;
  • 使用Lint检查没有使用资源并删除它;

答案 7 :(得分:3)

在图像文件大小上添加一件事 - 不同的算法会对最终大小产生重大影响。我发现Yahoo的www.smushit.com比我现在在电脑上使用的压缩器和编解码器更有效(至少对于.png)。

答案 8 :(得分:3)

四种方式,您的应用程序大小将从11.35 MB增加到大约5 MB。 首先,通过App Analyzer(Android studio的内置功能)检查应用程序组件,只需单击顶部的Build并单击Analyze APK。它将向您展示apk正在使用的所有组件。

  1. 启用Proguard
  2. 启用ShrinkResource
  3. resConfigs(如果您的应用只使用一种语言,例如英语,则只需指定resConfigs&#34; en&#34;)
  4. 将.png or.jpg中的所有图像转换为webp(最重要)。
  5. 实现这些步骤的步骤。

    1&amp; 2.对于Proguard和ShrinkResource

    在gradle中,只需添加

    即可
                   release {
                           minifyEnabled true
                           proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                           shrinkResources true
                    }
    
    1. 对于resConfigs

          defaultConfig {
          applicationId "com.goparties.gpuser"
          minSdkVersion 19
          targetSdkVersion 27
          resConfigs "en"
      

      }

    2. 将所有图像从.png or.jpg转换为webp

    3. 非常简单的过程:只需右键单击drawable文件夹(drawable,drawable-hdpi,drawable-xhdpi等),然后单击convertToWebP(最后一个选项)。

      Min SDK版本应为18。

      我们开始:现在分析您的应用规模。

      Bingo !!!!!!

答案 9 :(得分:2)

我可以从经验中指出两件事。

  1. 如果您使用eclipse创建apk文件,那么资源是重复的(至少在我的情况下发生),您可以尝试使用ant和build.xml来创建apk并比较大小。
  2. 另请参阅别名资源。它的链接是here

答案 10 :(得分:2)

我认为这个post可以让你更好地了解所有可能的方法,以大幅减少你的apk大小。

我会给你一个相同的摘录。

  1. 仅使用Google Play服务中所需的库。
  2. 将ProGuard应用到您的应用中。
  3. 缩小缩小。
  4. 采用矢量绘图。
  5. 使用android lint。
  6. 根据架构拆分你的apk
  7. 在gradle文件中添加resConfigs以指定本地化语言。
      

    这将删除所有其他字符串文件,这些文件可能是由其他库以您甚至不支持的语言添加的。

答案 11 :(得分:2)

我知道我迟到了回答这个问题,但我使用以下技术减少了我的应用程序大小,所以我想与所有人分享这些内容。

1) - 使用WebP图像而不是Jpeg图像,如果使用多个图像,它将对apk大小产生巨大影响。

2) - 如果您在应用中使用简单的小图标,请使用VectorDrawables。

3) - 在xml中使用View的色调属性以避免多个相同的图标但颜色不同。

  

搜索DrawableTint和TintableImageview

4) - 使用9补丁图像,避免重复应用程序代码中的图像或任何内容。

以下是指降低APK尺寸的链接。

https://developer.android.com/topic/performance/reduce-apk-size.html

https://developer.android.com/studio/build/configure-apk-splits.html#configure-split

https://developer.android.com/training/multiple-apks/index.html

答案 12 :(得分:2)

WebP图像格式:提供有损压缩(如JPEG)以及透明度(如PNG),但可提供比JPEG或PNG更好的压缩

Convert images to WebP

答案 13 :(得分:1)

除了上述最受欢迎的答案外,我还想回答谷歌Android Studio的最新工具。

Google最近推出了Android App Bundle,其中playstore自动将apk的优化版本发送到终端设备。 现在开发人员只需要生成Signed Bundle,并上传到Play商店,开始工作就完成了。不要忘记总是使用SVG图像。

另请查看Deliver Features On-Demand with Dynamic Features

enter image description here

答案 14 :(得分:0)

有一些技巧:

  1. Proguard
  2. 不必要的资源
  3. Webp图片
  4. 签名apk
  5. Android应用程序捆绑包

有关详细说明: https://stackoverflow.com/a/63988744/13928327

答案 15 :(得分:0)

使用MinifyEnable为true 和ShrinkResources为真

MinifyEnabled会在压缩代码时减少代码。 虽然shrinkResources缩小了资源。

要使用ShrinkResources,您必须将minifyEnbled设置为true。

答案 16 :(得分:0)

APK包含移动应用程序所有内容的zip文件,包括Java类文件,资源文件等。

使APK更小的一种简单方法是减少其包含的资源的数量和大小。特别是,您可以删除应用不再使用的资源,并且可以使用可缩放的Drawable对象代替图像文件。

答案 17 :(得分:0)

您可以通过del R.class减小apk大小,并将引用替换为常量。

看到这个: https://github.com/mogujie/ThinRPlugin

答案 18 :(得分:0)

以下是减少应用程序大小的方法。详细信息请参见以下链接。

https://medium.com/@fahimsakri/put-your-apks-on-diet-cc3f40843c84#.m860q8s1u

Proguard的

vector drawables

Apk拆分

优化png图像

删除未使用的资源

9补丁图片

压缩Jpeg图像

删除调试信息

避免重复

广泛使用lint

尽可能重用资源

推荐的媒体格式

答案 19 :(得分:0)

我使用Trimage image compressor来压缩图像并减小apk的大小。它具有良好的压缩率,易于使用,保留了图像的质量,也可以在Ubuntu中使用。除此之外,我启用了ProGuard并继续工作Lint问题减少APK大小。

答案 20 :(得分:0)

你也可以试试http://www.webresizer.com/resizer/它是一个在线工具,对我来说做得很好。

答案 21 :(得分:0)

以下是您可以通过图像减少构建大小的方法(也适用于iOS) 在这里,我将分享名为“OPTIPNG”的伟大工具(您可以从here下载),它将帮助我们通过使用图像来减少构建,它将减少我们正在使用的PNG的图像大小而不降低质量(图像的分辨率和颜色。

示例 - 如果您的图片大小超过698 KB,那么它将简单地缩小到564 KB

以下是OPTIPNG 0.7.5的执行步骤

1)终端 - &gt; OPTIPNG的CD / YourLocal路径

2)输入“./configure”

3)输入“sudo make install”

现在应该进行Intallation

4)键入“optipng / your image path

您将获得字节结果并且还可以检查您的尺寸

答案 22 :(得分:-1)

使用SVG图像而不是jpg来减少apk大小。 将您的图像文件放在数据库中..以便您的应用程序的用户可以从数据库下载它,这将大大减少应用程序的大小..