如何减less应用程序(.apk)大小

帮帮我!

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

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

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

我build议您尽可能压缩.jpg文件,这将大大减less.apk文件的大小。 免费的Paint.NET等工具可以帮助您做到这一点。 它有很大的调整选项。

其他答案提到缩小的图像。 您也可以考虑尝试使用ProGuard缩小您的字节码。 以下是关于将ProGuard应用到Android应用程序的文章 。

确保您的jpg没有以高于必要的分辨率存储。 一个不错的Android手机的屏幕分辨率为1920×1200或2560×1440(大约2015年) 800 x 480 ,所以你的背景不应该包含比这更多的像素(除非你的应用程序支持某种缩放)。 另外,背景照片? 如果没有,您可能会发现使用像svg这样的基于vector的图像格式,或者使用像gif这样的dynamic调色板格式,将会减小文件的大小。

UPDATE

随着Support Library 23.2的推出,现在您可以用SVG(w / or w / oanimation)replace许多Image资源,以进一步缩小apk大小。

原版的

这可能是一个迟到的答复,但可能有助于未来的用户。

参考这个链接 。 总结一下这个页面,它提到了下面的几个关键点,这将有助于减lessapk的大小:

  • 使用ProGaurd
  • 删除应用程序中的任何debugging信息 (诸如Log.i())之类的语句。 他们可以被包装在一个条件,只有在testing应用程序时才能启用。
  • 使用推荐的媒体格式
    • 图片:PNG orJPG
    • audio:AAC
    • video:H264 AVC
  • 使用OptiPNG或PNGCrush 压缩图像
  • 使用9patch来缩放图像
  • 使用此工具 查找未使用的资源并将其删除
  • 避免使用多个资源来实现相同的function。 资源不仅限于图像,还扩展到API。 有时一个单独的API可以提供多个结果,而不是使用两个或三个不同的API。 重复的string和资产也是浪费空间。

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

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

事实certificate,我并不需要appcompat-v7,只支持-v4,而对我的依赖进行这种更改将APK大小缩减为1.7M(使用ProGuard为0.9M)。 可以理解的是,支持库带有很多额外的代码和资源,所以确保你只使用你需要的那些。

(尽pipe对于一个11M的应用程序来说,-0.5M并不重要,但是我在这里发布这个信息是因为我在search解决scheme时一直在这个页面上结束…)

  • 使用tinypng压缩你的项目的PNG或JPG格式的图像文件,它可以大大减less图像的大小,而不会损失图像质量;
  • 有些图片使用tinypng压缩可能会失真,可以转换
    这些图像以webP格式,使用智图或iSparta可以将其他格式转换为webP;
  • 使用Lint勾选不使用资源并删除它;

还有一件事要添加图像文件的大小 – 不同的algorithm可以对最终的大小有显着的影响。 我发现雅虎的www.smushit.com比现在我的计算机上的压缩器和编解码器更有效(至less对于.png)。

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

  1. 如果你使用eclipse来创buildapk文件,那么资源是重复的(至less它发生在我的情况),你可以尝试使用ant和build.xml来创buildapk和比较大小。
  2. 还要考虑别名资源。 它的链接在这里 。

我知道我在这里迟到回答这个问题,但我减less我的应用程序的大小,使用下面的技术,所以我想与所有分享这些东西。

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

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

3) – 在xml中使用视图的tint属性,以避免多个相同的图标,但颜色不同。

searchDrawableTint和TintableImageview

4) – 使用9个补丁的图像,避免在应用程序代码中重复图像或任何东西。

以下是指减lessAPK大小的链接。

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

我认为这个post会给你一个更好的想法,所有可能的方法来减less你的apk大小的巨大利润。

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

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

    这将删除所有其他string文件,这些文件可能已经被其他库甚至不支持的语言添加。

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

将图像转换为WebP

这里是你可以做的减less图像的构build大小(也可以为iOS工作)在这里我分享了称为“OPTIPNG”(你可以从这里下载),这将有助于我们特别减less了使用图像,这将减less我们正在使用的PNG的图像大小,而不会降低图像的质量(分辨率和颜色)。

例子 – 如果你的图片大小是closures的698 KB,那么它将简单的缩小到564 KB

这是OPTIPNG 0.7.5的执行步骤

1)OPTIPNG的terminal – > CD / YourLocalpath

2)input“./configure”

3)input“sudo make install”

应该立即进行心动训练

4)input“optipng /你的图片path

你会得到字节的结果,也可以检查你的大小

我使用了Trimage图像压缩器来压缩图像,并减小apk的大小。它具有良好的压缩率,易于使用,保留图像的质量,也可在Ubuntu中使用。除此之外,我启用了ProGuard,并在Lint问题上努力减lessAPK尺寸。

以下是减less应用程序大小的方法。 详细解释在下面的链接。

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

Proguard的

vector绘制

APK分裂

优化PNG图像

删除未使用的资源

9个补丁的图像

压缩Jpeg图像

删除debugging信息

避免重复

广泛使用棉绒

尽可能重用资源

推荐的媒体格式

您可以通过del R.class减小apk大小,并将参考replace为常量。

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

APK包含您的移动应用程序所包含的所有东西(包括Java类文件,资源文件等等)的zip文件。

使APK变小的一个简单方法是减less包含的资源的数量和大小。 尤其是,您可以删除应用程序不再使用的资源,并且可以使用可缩放的可绘制对象来代替图像文件。

使用MinifyEnable true和ShrinkResources true

MinifyEnabled会减less你的代码压缩它。 而shrinkResources收缩资源。

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

使用SVG图像,而不是JPG,以减lessapk的大小。 把你的图像文件在数据库..所以你的应用程序的用户可以从数据库中下载它,它会大大减less应用程序的大小..