如何减少 Android 中的 APK 大小?

安卓之APK瘦身与资源压缩方案 随着安卓设备的普及,应用市场上的竞争日益激烈。为了提供更好的用户体验,开发者需要不断优化应用的大小。APK瘦身和资源压缩成为减少应用体积、提高下载速度和节省存储空间的关键手段。本文将对安卓应用的APK瘦身与资源压缩方案进行深入分析,帮助开发者了解和实施有效的优化策略。 阅读详情

没有用户愿意下载大型 APK,因为它可能会占用他的大部分网络/Wifi 带宽,最重要的是,移动设备内的空间。

APK 的大小会影响应用的加载速度、使用的内存量以及消耗的电量。

优化应用程序的大小很重要,因为手机始终是内存和空间受限的设备。那么,在 Android-Development 中我们可以通过哪些方式来提高我们的 apk 大小呢?让我们继续在本文中学习。

了解 Android App Bundle

Android App Bundle是一种发布格式,包含您应用的所有编译代码和资源,并将 APK 生成和签名推迟到 Google Play。


Google Play 使用您的 app bundle 为每个设备配置生成和提供优化的 APK,因此只下载特定设备所需的代码和资源来运行您的应用程序。您不再需要构建、签署和管理多个 APK 来优化对不同设备的支持,并且用户可以获得更小、更优化的下载。

App Bundle 是发布格式


Android App Bundles - 文件定位和服务

  • 这些 Android 应用程序包对文件定位有何帮助?很简单,假设我们的应用程序中有 hdpi、xhdpi、xxhdpi 资源。根据正在下载应用程序的设备,如果它是 hdpi 设备(例如),则只会在设备上安装来自 hdpi 的资源。
  • 如果应用程序针对多种语言(英语、西班牙语、法语等),则只会将特定的字符串资源下载到设备上。
  • 这有助于节省设备内存的空间。

构建 Android App Bundle

  • 构建 Android 应用程序包非常简单。只需从 Android Studio 菜单中选择 Build 选项,然后选择 Build Bundles

    Android 尺寸分析器

为了了解哪些文件实际上在应用程序中占用了更多空间,请使用 Android Studio 中的 Android Size Analyzer 插件。用于安装插件

  1. 选择File > Settings(或在 Mac 上,Android Studio > Preferences。)
  2. 选择左侧面板中的插件部分。
  3. 单击市场选项卡。
  4. 搜索“Android Size Analyzer”插件。
  5. 单击分析器插件的安装按钮。


安装插件后重新启动 IDE。现在,要分析应用程序,请从菜单栏中转到分析 > 分析应用程序大小。我们会得到一个类似这样的窗口:


这些建议可以帮助我们以更好的方式减小应用程序的大小。

删除未使用的资源

正如我们已经讨论过的,apk 的大小会影响应用程序的加载速度、使用的内存量以及消耗的内存功率。因此,可以实现以减少 apk 大小的主要事情之一是删除应用程序中未使用的资源。

此外,建议使用可缩放的可绘制对象(导入矢量资源)而不是其他图像格式,如 PNG、JPEG 等。
使用 Vector Drawable 是显着减小尺寸的最佳方法之一。

使用Lint

Lint 实际上有助于在应用程序内生成警告或未使用的代码。因此,这实际上可以帮助删除它们,从而有助于减小应用程序的大小。

减少库大小

检查在使用库时是否可以减小大小。例如,仅使用特定的 Google Play 服务库。只编译需要的。

重用代码

面向对象编程解决了编程世界中的很多问题。尽量重用代码而不是重复代码。重复代码还会导致文件大小增加,从而影响 Apk 大小。

压缩 PNG 和 JPEG 文件

如果在您的项目中必须使用 PNG 和 JPEG 文件,您可以使用 TinyPNG 等图像质量工具对其进行压缩。

在大多数应用程序中,图像用于传达信息或改善用户体验。但是这里最大的缺点可能是使用了大量的图像,这会增加应用程序的大小。在将应用程序发布到 Play 商店之前,确保了解并实施图像压缩技术以减小 apk 的大小。

使用 WebP 文件格式

正如我们在上面为 Android Analyzer 插件共享的图片中看到的,其中一项建议是将 PNG 文件更改为 WebP 文件格式。

使用 Proguard

每次我们构建一个新项目时,我们都会在应用级的 build.gradle 文件中看到如下一段代码

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

ProGuard 对我们的项目产生以下影响,

  • 它减小了应用程序的大小。
  • 它删除了导致 Android 应用程序的 64K 方法计数限制的未使用类和方法。
  • 它通过混淆代码使应用程序难以进行逆向工程。

创建多个 APK

如果我们不使用 App Bundle,我们可以使用传统方式。我们可以创建多个类似于 App Bundle 的 APK。Multiple apk 主要用于针对不同的屏幕密度和不同的 CPU 架构生成特定的 APK。

收缩资源

尽可能减少资源。在 Gradle 中使用shrinkResources属性将删除项目中任何地方未使用的所有资源。通过添加以下行在您的应用程序级 build.gradle 文件中启用此功能:

buildTypes {
    release {
        ........
        shrinkResources true
        ........
    }
}

资源配置

使用resConfigs删除不需要的本地化资源。所有支持库都可能具有我们不需要的其他语言的本地化文件夹。
Gradle 资源收缩器仅删除您的应用代码未引用的资源,这意味着它不会删除不同设备配置的替代资源(特定于设备/位置)。如有必要,您可以使用 Android Gradle 插件的resConfigs属性来删除您的应用不需要的替代资源文件。
以下代码段显示了如何将语言资源限制为仅英语和法语:

android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

如前所述,拥有未使用的语言资源只会增加 apk 的大小。因此,删除未使用的文件和资源很重要。

调试实现

删除您在应用程序中拥有的任何调试库。它可以通过在构建测试调试 apk 时使用debugImplementation来完成。

debugImplementation 'com.amitshekhar.android:debug-db:1.0.1'

使用 R8 减小 APK 大小

R8 缩减是我们减少应用程序代码量的过程,通过这样做,APK 大小会自动减小。R8 作为 Proguard 完成大部分工作。为什么我们需要更喜欢它?原因是它适用于 Proguard 规则并在提高输出大小的同时更快地缩小代码。

最后,有什么比在我们的应用程序中理解和实施这些步骤来为我们的客户提供优化的 apk 更好的了!

这就是这篇文章的全部内容。

我们希望这篇文章对理解在 Android 中减小应用程序大小的不同方法有所帮助。

如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。

很多人在刚接触安卓这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,需要一份小编整理出来的学习资料的点击文末微信卡片免费领取~

这里是关于我自己的Android 学习,面试文档,视频收集大整理,有兴趣的伙伴们可以看看~

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

非常感谢您的参与!

类比于微信,如何对Apk进行极限压缩,谈下Android压缩8大步 一、简介 随着项目的不断迭代,代码量跟资源文件不断增多。那么就会出现打包后的 APK 文件越来越大,如果突然有一天你们老板或领导叫你优化 APK 大小,你还不知道怎么优化那就有点说不过去了,这篇文章咱们就来一起分析并优化 APK 体积大小吧。 分析 APK 资源占用 二、注意: 我是在 GitHub 找了一个人气比较高的开源项目,需要的话自己可以点击下载,自己动手尝试一番. 分... 阅读详情

相关推荐

Android开发:Apk结构分析及减少包大小

作者:Hanking 前言 apk的大小对于下载apk应用的用户多少有直接的影响,由于手机内存的限制和网络环境的限制,同一个应用随着apk越大下载的和使用的人数就会越少,所以减少apk的大小是非常重要的。本文从apk编译过程,apk的组成,apk大小减少的方法三个方面分析如何减少apk的大小 一、apk的编译过程 在构建过程中,Android项目会被编译,打包,生成.apk文件,apk文件包含...

weixin_45258969的博客 855

Android如何减少apk大小(瘦身)

Android如何减少apk大小

xuyin1204的博客 1142

减小 APK 大小的有效方法是在 Android Studio 中对静态内容使用 Gzip

zip 在不丢失数据的情况下压缩和解压缩文件,减小文件大小以加快传输速度。它通常用于通过 Internet 传输文件和压缩静态 Web 内容。它得到广泛支持和普遍使用。Gzip 在 Android 开发中可用于压缩静态内容文件,例如字体、图像和脚本,以减小它们的大小并提高应用程序性能。压缩这些文件可以加快应用程序的加载速度,尤其是在网络连接速度较慢或处理能力有限的设备上。此外,较小的文件大小可以减少应用程序的下载大小,使用户更容易下载和安装。

iCloudEnd的博客 890

Android开发——减小APK大小

转 原文:http://blog.youkuaiyun.com/seu_calvin/article/details/52199151 APK的组成结构 META-INF:包含CERT.SF和CERT.RSA签名文件,和MANIFEST.MF清单文件。assets:包含APP的assets资源,代码中可以通过AssetManager对象访问。res:包含没有编译到resources.arsc中的资源。lib:包

u011621167的博客 627

STM32L051低功耗模式下LPUART的使用

STM32L0系列低功耗UART配置代码清单及注释,大家可参考学习使用。

嵌入式工程师 2104

医疗大模型实战——从零构建MedicalGPT全流程解析

本文详细解析了从零构建医疗大模型MedicalGPT的全流程实战。基于Qwen-7B模型与约195万条中文医疗数据,完整复现了增量预训练、监督微调与偏好对齐三大核心环节,并分享了如何在有限硬件资源下实现高效训练与部署,为开发者提供了可复现的医疗AI项目实战指南。

weixin_29193259的博客 556

减少Android应用程序的八种方法APK大小

在不显着增加APK大小的情况下支持尽可能多的设备一直是Android开发人员面临的一个问题。但是,Android团队的目标是改变所有这一切,采用新的发布格式,旨在帮助您支持所有Android设备,同时_减少_ APK的大小。根据,通过以这种新的)格式发布您的应用程序,您应该能够将APK的大小平均减少35%。将您的应用上传为**.aab**文件后,Google Play将使用此单个文件生成:基本APK包含提供应用基本功能所需的所有代码和资源。下载您应用的所有人都将获得相同的基本APK。

2401_89324001的博客 1191

【SOFA】SOFA框架+Win10+VS2019 配置

SOFA (Simulation Open Framework Architecture)官网 SOFA 是一个开源的仿真框架,用于实时的物理仿真,而且主要针对医学上的仿真。主要用于研究人员开发新的算法,也可以作为一个有效的快速成型工具或是物理引擎。 官网中给出的配置方法写的很清晰,有着各个库或者软件的版本要求,仔细看按版本要求来 官网配置地址 官网给了两种方 1.通过脚本自动配置 2. 自己下载相关库通过CMake进行生成 第一种 没使用,不知道是否好使,因为如果其中有下载的东西,国内不一定能成功,大家可

GordonWei 5260

减少Android APK大小

用户经常避免下载看起来很大的APP,尤其是你的设备连接参差不齐的2G、3G网络或者使用按数据流量支付的业务。本文将介绍如何减少APK 尺寸,使得更多的用户可以接受下载你的APP。

qiaoyanfei的专栏 617

Matlab在线性代数中的应用(一):向量组的线性相关性

求列向量组A的一个最大线性无关组可用命令rref(A)将A化成行最简形,其中单位向量对应的列向量即为最大线性无关组所含向量,其它列向量的坐标即为其对应向量用最大线性无关组线性表示的系数。 01 — 例1 求下列矩阵列向量组的一个最大无关组。 解:编写脚本文件如下: >>format rat a=[1,-2,-1,0,2;-2,4,2,6,-6;2,-1,0,2,3;3,3,3,3,4]; b=rref(a) 求得: b...

wenyusuran的专栏 3237

【DRAM存储器四十六】LPDDR5介绍--基本操作之行操作、读、写

简述LPDDR5的行操作和读写时序

highman110的博客 764

【腾讯Bugly干货分享】Android减包 - 减少APK大小

本文是对Google官方文档 Reduce APK Size 的翻译,点击“阅读原文”可以查看英文原文。 译者简介:damonxia(夏正冬),天天P图Android工程师 用户经常会避免下载看起来体积较大的应用,特别是在不稳定的2G、3G网络或者在以字节付费的网络。这篇文章描述了怎样减少你的APK大小,这会让更多的用户愿意下载你的应用。理解APK的结构在讨论怎样减少应用大小之前,先了解A

腾讯Bugly的专栏 5138

Cadence OrCAD Capture 软件自带元件原理图符号库目录与介绍图文视频教程

硬件工程师在开始原理图设计时,应该首先拥有自己的元件原理图符号库。基于Capture进行原理图设计的一个很大的优点就是,软件自带的元件库比较全。本文简单介绍Capture软件自带元件库。

fydar的博客 5579

Android-APK瘦身实践:二次瘦身如何再减少大小?,2021年安卓开发进阶课程

support库可能还算好的,就怕有些库引用了一些大图而不自知,可以在/build/intermediates/exploded-aar/下的各个aar库的res目录查找检验。 apk减小了18k。 有问题可以加下技术交流群一起来讨论~ 6. 删除armable-v7包的so 感谢@杨辉__ ,@kymjs张涛的提醒,armable-v7和armable文件夹可以只保留armable。 当然,armable-v7a的库会对图形渲染方面有很大的改进,因为我们主要是一些业务上动态库,所以删掉无大碍。 ap

m0_64383184的博客 386

YOLO26 改进 | (教师:YOLOv8L,学生:YOLO26) | 知识蒸馏 (Knowledge Distillation)

本文介绍了基于YOLO26框架的知识蒸馏实战方法,通过教师模型指导学生模型训练,在不增加推理成本的情况下提升模型精度。文章详细阐述了基于响应的知识蒸馏实现方案,通过最小化教师与学生模型预测Logits间的KL散度实现知识迁移。核心实现包括:1) 创建DistillationModel包装器类,同时运行师生模型;2) 自定义DistillationLoss,在原检测损失基础上增加KL散度损失。该方法适用于希望保持YOLO26轻量级特性同时获得接近大模型精度的场景,文中提供了完整的代码实现方案。

weixin_51988935的博客 510

[ vulhub漏洞复现篇 ] ActiveMQ反序列化漏洞复现(CVE-2015-5254)

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。......

qq_51577576的博客 4444

减少Android App APK大小的8种方法

自2012年3月启动Android Marketplace以来,平均Android应用的大小已增长了五倍。 其中一些增加是有道理的:典型Android设备可用的内存增加了,那么为什么不使用这些额外的内存来提供更好的用户体验呢? 但是, 有一点,所有的高清显卡,创新功能和丰富的多媒体内容,对用户造成负面影响的经验,没有人想要一个应用程序,需要永远下载,然后取一大块出了自己设备的内存! ...

代码教主 3639

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

减少APK的大小,Android官方这样说

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34409703的博客 159

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android 减包 - 减少APK大小

(转载)http://www.10tiao.com/html/330/201704/2653578978/2.html 2017-04-27 18:31 夏正冬 本文来自“天天P图攻城狮”公众号(ttpic_dev) 本文是对Google官方文档 Reduce APK Size 的翻译,点击“阅读原文”可以查看英文原文。 译者简介:damonxia(夏正冬)

zhuhai__yizhi的专栏 725

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android如何减少apk大小

因为推广的需要,公司需要把APK的大小再“减小”一下,4M以内! 当达到4M以内之后,公司建议说,能否再压压?2M如何? 瘦身前 因为平时就考虑到大小的限制,所以很多工作已经做过了,如下列举现在的状态: 7.3M(Debug版本)和6.5M(Release版本)开启minifyEnabled开启shrinkResources已经去除不相关的大型库图片和代码已经经历过粗略

甄兴旺的博客 5040

简单有效的减少android项目中的apk大小

//在android studio项目的app下的build.gradle里,设置如下的项目 android { defaultConfig { //只支持英文,中文(指定支持的语言,减少apk体积)(不需要国际化的同学可以只设置中文"zh-rCN") resConfigs "en-rUS", "zh-rCN" ...

baidu_27888905的博客 385

APK大小缩小65%,内存减少70%:如何优化Android App

APK Analyzer是谷歌提供的一种工具,用于检查Android应用程序包(APK)的内容。APK Analyzer帮助开发人员了解他们的APK文件的组成,包括构成其Android应用程序的资源、资产和代码。将APK拖放到Android Studio IDE中以检查其组件。初始APK大小约为20.6MB。

虎哥LoveDroid 2114

Android通过减少图片以降低apk大小

手头项目的apk达到5.7M,drawable-hdpi,drawable-mdpi,drawable-ldpi分别存放了高、中、低三套图。由于图片太多,造成apk过大。尝试性地将drawable-mdpi,drawable-ldpi中图片都删掉后,中、低分辨率机器竟然也显示正常,这大概是由于在布局文件中(高分辨率的,中低分辨率的基本没写)将原来开发人员用的px度量单位都改成了dip度量单位,使得

berber78的专栏 4334

Android 最佳实践-性能-减少APK大小

原文链接 https://developer.android.com/topic/performance/reduce-apk-size减小APK大小    用户通常避免下载过大的应用,尤其是新兴市场,那里的设备通常链接的是2G/3G网络或者是按流量收费的,这篇文章讲解如何减小你的APP包大小,从而让更多的用户下载。理解apk的结构    在讨论如何减小app大小之前,先了解app包的结构对此是很...

仰光隆的专栏 968
上一篇: 如何在 Android 中获取用户位置
下一篇: GradientDrawable:何时以及如何在 Android 中使用它
不秃头de程序猿
博客等级 码龄5年 4089粉丝 1478原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值