Android性能优化-Apk瘦身(1)

Android性能优化之APK瘦身详解(瘦身73%) 公司项目在不断的改版迭代中,代码在不断的累加,终于apk包不负重负了,已经到了八十多M了。可能要换种方式表达,到目前为止没有正真的往外推过,一直在内部执行7天讨论需求,5天代码实现的阶段。你在写上个版本的内容,好了,下个版本的更新内容已经定稿了。基于这种快速开发的现状,我们app优化前已经有87.1M了,包大了,运营说这样转化不高,只能好好搞一下咯。优化过后包大小为23.1M(优化了73... 阅读详情

接下来我们会聊一聊Android的应用瘦身。

1、Apk结构

图片

上图是我用android studio打开一个apk文件所展示的截图,从上图我们可以看到,一个apk中有res、lib、dex、assets等文件组成,其中res、lib占了整个apk的70%左右的空间。

lib: 包含特定于处理器软件层的编译代码。该目录包含了每种平台的子目录,像armeabi,armeabi-v7a, arm64-v8a,x86,x86_64,和mips。大多数情况下我们可以只用一种armeabi-v7a,但目前各大应用市场都要支持64位,所以也会加上arm64-v8a。

assets: 包含应用可以使用AssetManager对象检索的应用资源。

res: 包含未编译到的资源 resources.arsc,主要有图片资源文件。

META-INF:包含CERT.SF和 CERT.RSA签名文件以及MANIFEST.MF 清单文件。

resources.arsc: 包含已编译的资源。该文件包含res/values/ 文件夹所有配置中的XML内容。打包工具提取此XML内容,将其编译为二进制格式,并将内容归档。此内容包括语言字符串和样式,以及直接包含在resources.arsc文件中的内容路径 ,例如布局文件和图像。

classes.dex: 包含以Dalvik / ART虚拟机可理解的DEX文件格式编译的类。

AndroidManifest.xml: 包含核心Android清单文件。该文件列出应用程序的名称,版本,访问权限和引用的库文件。该文件使用Android的二进制XML格式。

我们从上面结构图可以知道,我们需要重点的优化对象是res、lib、asset、classes.dex等文件。

2、lib瘦身

lib文件瘦身的,我们可以根据场景设置合适的支持so架构

如:

图片

早些时候,我们一般只需要支持armeabi-v7a就可以,但是随着近年来64位的设备越来越多,从性能和体验上出发,越来越多的应用市场要求必须支持64位的架构即arm64-v8a,所以一般要配置armeabi-v7a、arm64-v8a两种类型。

我们如何根据自己的产品去适配呢?

手机架构APP适配armeabiarmeabi-v7aarm64-v8a
armeabi可以可以可以
armeabi-v7a不可以可以可以
arm64-v8a不可以不可以可以
  • 只适配armeabi的APP可以跑在armeabi,armeabi-v7a,arm64-v8上
  • 只适配armeabi-v7a可以运行在armeabi-v7a和arm64-v8a
  • 只适配arm64-v8a 可以运行在arm64-v8a上

3、classes.dex优化

我们classes.dex文件是程序编译后的字节码文件,所以要减少他的大小的,主要是通过减少代码来实现。

  1. 减少三方库的依赖;三方库功能比较齐全,但是我们只需要用到其中一个小功能点,此时我们可以通过借鉴三方库来实现我们的功能。

  2. 同一个功能使用了不同的三方库,例如图片即使用了glide库,又使用了fresco,同时又用了picasso,这就没必要了,完全可以合并一个库来使用。

  3. 去除andorid support库,当然现在大家都开始用androidx了。

Android APK打包全流程解析与优化实践 APK打包是Android开发中的核心技术环节,涉及编译、资源处理和签名等关键步骤。Gradle构建系统作为现代Android开发的标准工具链,通过Android Gradle Plugin(AGP)实现自动化构建流程。理解aapt2资源编译、D8/R8代码优化、以及V2签名等底层原理,能有效解决构建失败、渠道包定制等实际问题。在工程实践中,结合productFlavors实现多渠道打包,配合ProGuard代码混淆和资源压缩,可显著提升APK安全性和发布效率。本文以Gradle构建系统为核心,详解从基础配 阅读详情

相关推荐

OLED的字模提取(保姆级)---基于PCtoLCD2013

做为一个刚刚开始接触编程不久的白菜,这个OLED想做一个信息显示,可是商家给我的例程里就是88,816两种字体的格式,我的屏幕是0.91寸的8*16的字体显示上感觉特别丢丢儿小,我就想整个大的,哎,只怪直接学习习惯不好,总是学一半,绕了好大一圈,才搞好,想写一篇博客,时刻提醒踏实学习,第一次写博客,小白一枚,勿喷。。 OLED屏幕驱动程序功能 我们对Markdown编辑器进行了一些功能拓展与语法支...

qq_44886611的博客 7782

Android安装包大小优化

安装包的构成 1 assets assets目录可根据应用需求存放任何文件夹架构,比如配置文件,资源文件,图片资源,这些文件的内容再程序运行过程中可以通过AssetManager类获得。和res不同在于,res下的文件会在R文件中生成对应的资源ID,assets不会生成ID 2 lib 存放C/C++写的库文件,4个类型:ARM、ARM-v7a、MIPS、X86 目前的移动设备大部分是基于ARM或者ARM-v7a架构的,X86和MIPS架构的移动智能终端比较少,并且X86的设备基本都兼容了AR..

Tiger的专栏 755

Unity3D安装:离线安装 Unity

Unity 下载助手 (Download Assistant) 支持离线部署。在这种部署方式中,可下载用于安装 Unity 的所有文件,然后生成脚本以便在未接入互联网的其他计算机上重复相同的安装。运行下载助手,并在一台计算机上正常安装 Unity。此计算机必须有足够的可用磁盘空间来下载所有文件。单击下拉选单并选择 __Custom__,然后选择要将文件下载到的位置。打开 PC 的文件管理器,导航到之前指定的自定义位置文件夹,然后在该文件夹内查找。整理翻译,转载请注明出处!

ygtu2018的博客 3258

Android 包体积优化建议-资源篇

这是 Android 官方文档给出的一些减少包体积的建议,最近正好在看这方面内容,顺手记录、分享一下。本文主要是针对 Android 的资源(Resource) 相关优化建议。

嘴巴吃糖了 671

通过情感分类实例 详细介绍如果借助Huggingface平台 完成Transformers模型运行(包括配置环境-tokenizer-Model-输出头-预测)

attention_mask和padding是配套使用的,当人为去修改padding的时候,也要把attention_mask里面的参数进行修改。下载Huggingface包,Huggingface可以说是一个社区,集成了很多nlp的模型、数据集、预训练权重文件等等,并且免费,只需要pip install下载即可。那么用什么做分类就选择什么输出头,就import什么东西。代码中使用了自动分词器选择,它是由checkpoint指定的预训练模型关联的,不用我们自己选择tokenizer,它自动帮我们选择好了。

LZL2020LZL的博客 1137

Quuppa 如何引领蓝牙 ® 定位服务的全新发展方向

我们最优质的客户,是那些对其他实时定位系统(RTLS)的承诺感到失望、转而寻求 “能覆盖全业务场景的更广泛赋能技术” 的客户 —— 前文提到的消防车制造商就是典型案例:他们尝试并通过 Quuppa 的蓝牙方案取得了成功。我们希望业务合作伙伴(如系统集成商、解决方案提供商)能充分利用 Quuppa 智能定位系统的功能,为客户提供专属解决方案:无论是追踪微型标签、实现未来移动设备的 AoD 功能,还是基于 RSSI 的简单信标(信标作为物联网网关),这些功能都能让同一套 Quuppa 系统支持广泛的用例。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 833

你必须要懂的APK瘦身知识

随着业务复杂度的逐渐增加,代码、资源也在不断的增加,此时你的APP大小也在增加。从用户层面来说,面对动辄几十兆的APP来说在非WIFI情况下还是会犹豫要不要下载,不下载你就可能因此失去了一个用户。从公司层面来讲,流量就是钱,减少APP的大小就显得尤为重要。从开发者层面上来讲,你掌握了这个手艺也会略显逼格满满。 废话不多说了,开始正题。 01 APK结构的那些事 知己知彼,方能百战不殆。了...

weixin_33730836的博客 333

c++ pcl点云处理(2025 长期更新)

目录1.常用的点云文件2.认识点云的文件格式3.点云的数据结构4.输入输出(IO)5.KD树6.Oc树(八叉树)7.点云可视化8.点云滤波9.点云拟合分割10.点云与图像11.特征点与特征描述及提取12.点云配准13.点云曲面重建

twnkie的博客 2259

Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚

随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 没错,你的应用中的Dex 文件方法数超过了最大值65536的上限,简单来说,应用爆棚了. 那么让我们看一下为什么会引起这种

Whatever is worth doing is worth doing well. 19万+

HyperLynx(十三)Hyperlynx前放置之对网络的EMC分析

在“Spectrum Analyzer”对话框的“Stimulus”(激励)栏中,设置激励源频率为100MHz,选择“IC modeling”为“Fast-Strong”,并按图所示设置其他选项。显然,在仿真的基频上,它的幅值最大,将鼠标光标置于柱状图上,可以读取其值为64.28mA,这个数值是由选定的驱动芯片决定的。按上图所示的原理图,在接收端增加一个并联的RC负载,再次运行仿真,结果如图所示。在对话框左侧的“Pins”列表中,显示出了已添加电流探针的引脚,可以在此列表中选择所要仿真的目标。...

小幽余生不加糖 4681

基于Simulink的电动汽车电池管理系统热管理优化仿真

电动汽车电池管理系统(Battery Management System, BMS)中的热管理是确保电池性能、安全性和寿命的关键环节。温度过高或过低都会显著影响电池的工作效率和寿命,因此需要对电池组进行精确的热管理。基于MATLAB/Simulink的仿真平台可以用于建模和优化电池热管理系统,包括热分布预测、冷却策略设计以及热平衡控制等。本项目旨在构建一个完整的电动汽车电池热管理优化仿真模型,并通过仿真验证系统的性能。

xiaoheshang_123的博客 462

gradle从4.0.x版本升级到7.0.x版本后打包dex文件变大

最近开发项目需要升级gradle,从4.0.0 升级到7.0.2后发现打release包体积变大了,对比完升级前后的包发现,只有dex文件增加了,其他的基本没啥变化,而且dex文件增加了7M多,一下懵逼了。排查了好久发现是,minSdkVersion 为28或大于28时AGP默认在apk打包时不压缩dex文件这导致了apk包大小增加了,需要开启AGP默认打包时压缩,需要添加下面代码。在build.gradle 配置。从新打包后发现可以了。

原来我是成成 1221

USB 网卡——RNDIS 控制消息流程

在其控制端点上获取控制消息时,设备必须在通信类接口的中断 IN 端点上返回通知,每当设备可以返回控制消息时,主机就会轮询该通知。需要注意的是,如果设备由于某种原因收到GET_ENCAPSULATED_RESPONSE,并且无法使用控制端点上的有效数据做出响应,则应返回设置为 0x00 的单字节数据包,而不是 stall 控制端点。下表中定义了此传输。收到 RESPONSE_AVAILABLE 通知后,主机使用下表中定义的GET_ENCAPSULATED_RESPONSE 传输从控制端点读取控制消息。

tyustli 372

2024年安卓最全Android性能优化之APK瘦身详解(瘦身73%)(1),2024年最新安卓常见面试题

好了,说道这里基本上就结束了,apk包从87.1M减小到了23.1M(优化了73%,不要说我标题党)已经差不多了,关于第四部其他部分的优化我是没有进行再操作的。因为公司运营觉得二三十M的包比较真实,太小了就太假了。所以我暂时就不进行优化了。如果再上面提到的部分通过所有将所有非启动页面首页之外的所有资源,so库放服务端,理论上apk包大小能在10M以内这样子。当然我们有做到就不多加评价了。最后,如果对插件化开发感兴趣的话可以参考下这篇文章Android全面插件化方案-RePlugin踩坑。

2401_84537646的博客 678

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

记录一下面试考题二(Ap性能优化,Activity、Window和View,TLS1.1,TLS1.2)

1,APP性能优化 APK瘦身 将图片转换为 webp 格式 WebP是谷歌提供的一种支持有损压缩和无损压缩的图片文件格式,而且可以提供比JPEG或PNG更好的压缩。在Android 4.0(API level 14)中支持有损的WebP图像,在Android 4.3(API level 18)和更高版本中支持无损和透明的WebP图像。 除去多语言 android{ ... defaultConfig{ ... //只保留英语 resC

十一月Siy 578

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android性能优化之应用瘦身(APK瘦身)

APK瘦身优化的优先级相对来说是比较低的,因为优化后也并不能明显的看到有什么好处,这一块主要影响转换率,应用越小, 可能用户下载的意愿就越高,另外在进行预装时,也有大小的要求。

fumeidonga的博客 1940

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android性能优化之APK瘦身详解

APK瘦身

qq_33209777的博客 2214

Android性能优化之APK瘦身详解(瘦身73%),美团架构师深入讲解Android开发

文章主要内容从理论出发,再做实际操作。分为下面几个方面:1.结构分析2.具体实操3.总结。

m0_60721860的博客 1364

六个小技巧帮你瘦身Android APK

Android应用的大小对用户体验和应用性能至关重要。大型APK文件会增加应用的安装时间,启动时间和页面加载时间,降低了用户体验。因此,APK瘦身是Android开发中的重要任务。在本文中,我们将分享6个小技巧,帮助你优化和瘦身Android应用,提高性能和用户体验。在开始深入研究APK瘦身之前,让我们先了解为什么它如此重要。Android应用通常包含大量资源文件,如图像、音频和布局文件。优化这些资源文件是APK瘦身的第一步。应用的代码也是APK体积的一个关键因素。

Eqiqi的博客 2129

Android性能优化:APK瘦身技巧

本文详细介绍了Android性能优化中的APK瘦身技巧,包括资源优化、代码优化和资源管理等方面。APK瘦身不仅能提升应用的加载速度,还能降低用户的流量消耗。开发者应该重视APK瘦身,合理运用各种优化技巧,以提高应用的性能和用户体验。在实际开发过程中,开发者还需不断学习和探索,结合应用的具体情况,选择合适的优化方法。未来,随着移动设备的性能提升和网络环境的改善,APK瘦身将更加重要。持续关注新技术:关注Android官方发布的最新技术和工具,掌握最新的优化方法。定期评估应用性能。

2501_92489105的博客 499

Android性能优化(5):APK瘦身优化

文章目录1. APK文件结构2. APK瘦身优化2.1 优化dex文件大小2.1.1 Proguard2.1.2 AndResGuard2.2 优化资源文件大小2.2.1 Android Lint2.2.2 [tinypng](http://leonshi.com/2015/11/02/tinypng-compress/)2.2.3 WebP2.3 优化libs目录大小2.3.1 裁剪libs目录...

老蒋也疯狂 3934

Android性能优化之Apk瘦身

【摘要】随着业务迭代,APK体积逐渐增大,影响应用性能。本文介绍了APK组成结构及多种优化方法:1)使用Android Size Analyzer插件分析体积;2)通过shrinkResources移除未使用资源,配合Lint工具物理删除;3)配置resConfigs保留指定语言资源;4)动态库优化,按CPU架构分包;5)使用矢量图替代位图,通过tint属性复用资源。这些方法可有效减少APK大小,提升加载速度和运行效率。(150字)

ChenYiRan123456的博客 744

android 性能优化 -- APK瘦身

性能优化 -- APK大小减负1、APK的结构组成: target: 了解APK的结构组成,及常用的缩减大小方法。 1、APK的结构组成:

Hair_的博客 937

性能优化之apk瘦身:APK瘦身详解

目录 1. 结构分析 2.具体实操 1. 对lib目录下的文件进行瘦身处理 2. 优化res,assets文件大小 3. 减少chasses.dex大小 4. 其他 1. 结构分析 首先上传一张瘦身前通过Analyze app分析出来的图片(打开方式:Android Studio下 ——> Build——> Analyze app): APK包结构如下: ...

duxingerlai的博客 560
上一篇: Android性能页优化-启动页优化
下一篇: Android性能优化-Apk瘦身(2)
码农驿站
博客等级 码龄10年 5粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值