app瘦身处理

安卓安全-apk完整性校验 crc32全称是“Cyclic Redundancy Check”,中文名是“循环冗余码”。 它的计算是非常非常非常严格的。严格到什么程度呢?你的程序只要被改动了一个字节(甚至只是大小写的改动),它的值就会跟原来的不同 至于crc32的值是如何计算的以及实现原理,本文不做讲解,有兴趣的可以google。 在apk中,反编译后恶意的篡改代码重新打包主要集中在dex文件中,所以可以通过获取dex文 阅读详情

1.app包的大小组成

一般由代码的dex文件和.so文件以及资源文件图片(drawable,mipmap)文本(string多国语言)等资源组成。

对于代码文件的优化一般思路是取代无用代码比如开启无用代码过滤压缩平台过滤等。

对于资源文件思路是满足当前手机需要去除无用资源,资源格式转化和压缩等。

2.图片资源处理

1.图片类型

png和jpg的区别

png 资源大 编码简单 运行效率高 占用内存大 

jpg 资源小 编码复杂 运行效率低 占用内存小

WebP 的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha 透明以及动画的特性,在 JPEG 和 PNG 上的转化效果都相当优秀、稳定和统一。

2.图片压缩方式

哈夫曼压缩算法

3.图片png压缩

压缩地址:https://tinypng.com

4.套图转svg图片

公开免费的阿里svg库:https://www.iconfont.cn

svg转化的操作

下载批量转化工具

https://github.com/MegatronKing/SVG-Android

tint改变矢量图的颜色

Tint 是 Android5.0 引入的一个属性,它可以在Android5.0 系统上,对视图进行颜色渲染。Tint的存在一定程度上减少了我们对图片的需求以及apk的大小。

使用场景主要是:1.一张矢量图适配所有颜色。2.一张图片实现 selector

5.启动图片设置成webp格式或者进行压缩将启动大图体积减少

6.Android加载图片资源的原理

1.图片大小计算:

大小 = 长*宽*图片通道

图片通道对于的大小

ALPHA_8 -- (1B)
RGB_565 -- (2B)
ARGB_4444 -- (2B)
ARGB_8888 -- (4B)
RGBA_F16 -- (8B)

3.string类型优化(国际化优化)

resConfig 'en' //只适配英文

4.动态库打包配置

armeabi,armeabi-v7a,armeabi-v8a的区别

armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。

armeabi-v7a: 第7代及以上的 ARM 处理器。现在armeabi-v7a只存在少部分老旧手机

armeabi-v8a: 第8代、64位ARM处理器。在2011年11月,ARM公司发布了新一代处理器64位架构ARMv8的部分技术细节(也就是我们常说的Cortex-A57A53)。64位ARMv8架构中包含两个执行状态:AArch32(也就是我们常说的ARMv7)和AArch64(ARMv8)。AArch64执行状态针对64位处理技术,引入了一个全新指令集A64(也就是基于收购的MIPS64架构),而AArch32执行状态将支持现有的ARM指令集。所以64位的ARM处理器中同时包含着32位的ARMv7和64位的ARMv8两种架构。

具体可以参考:https://blog.youkuaiyun.com/forever_2015/article/details/50285865

打包配置到app内的.so设置如下

ndk{
    abiFilter "armeabi-v7a"
}

打包成多个app设置app内可以包含哪些.so配置abi split分包配置

enable: 是否启用ABI拆分机制
reset():重置ABI列表为只空字符串,一半和include、exclude一起使用,如果要用必须在include和exclude前面
include:指明要包含哪些ABI,目前使用最多的伪64位处理器的arm64-v8a,其次才是armeabi-v7a
exclude:默认包含下所有ABI,可以移除一些ABI
universalApk:是否打包一个通用版本,包含所有的ABI,默认值为 false

也是可以实现的那就是 abi split分包,实现也很简单,在gradle 中添加如下配置:

enable: 是否启用ABI拆分机制
reset():重置ABI列表为只空字符串,一半和include、exclude一起使用,如果要用必须在include和exclude前面
include:指明要包含哪些ABI,目前使用最多的伪64位处理器的arm64-v8a,其次才是armeabi-v7a
exclude:默认包含下所有ABI,可以移除一些ABI
universalApk:是否打包一个通用版本,包含所有的ABI,默认值为 false

splits {
    abi {
        enable true
        reset()
        include 'arm64-v8a','armeabi-v7a'
//      exclude 'armeabi'
        universalApk true
    }
}
那么这种情况下打包会生成3个apk,我们把它们解压缩一探究竟,
第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件
第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件
第三个:app-universal-release.apk,里面会包含arm64-v8a和armeabi-v7a文件夹中的so文件
根据不同平台选择不同的apk

2、abiFilters过滤
先设置splits,不设置abiFilters的情况下,代码如下:
 splits {
    abi {
        enable true
        reset()
        include 'arm64-v8a','armeabi-v7a','armeabi'
//      exclude 'armeabi'
        universalApk true
    }
}
那么这种情况下打包会生成4个apk
第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件
第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件
第三个:app-armeabi-release.apk,里面只会包含armeabi文件夹中的so文件
第四个:app-universal-release.apk,里面会包含arm64-v8a、armeabi-v7a、armeabi文件夹中的so文件

再设置abiFilters过滤:
ndk {
    abiFilters 'arm64-v8a',"armeabi-v7a"
}
那么这种情况下仍然会打包会生成4个apk
第一个:app-arm64-v8a-release.apk,里面只会包含arm64-v8a文件夹中的so文件
第二个:app-armeabi-v7a-release.apk,里面只会包含armeabi-v7a文件夹中的so文件
第三个:app-armeabi-release.apk,里面只会包含armeabi文件夹中的so文件
第四个:app-universal-release.apk,里面会包含arm64-v8a和armeabi-v7a文件夹中的so文件

结论:abiFilters过滤就是在splits的基础之上,再选择打入universal中所包含的几种处理器架构的文件夹的
 

5.配置资源和压缩对齐

proguradFiles

去除无用资源

lint

6.

 

cmfa-2.10.4-meta-universal-release.apk 立即下载

相关推荐

app-release.apk

纯属个人开发、小作品,此功能有简单的登录界面、电影列表、音乐列表

安卓APK安装包arm64-v8a、armeabi-v7a、x86、x86_64有何区别?如何选择?

在GitHub网站下载Android 安装包,Actions资源下的APK文件通常有以下版本供选择:例如上图是某Android客户端的安装包文件,有以下几个版本可以选择:版本号后面的信息是Android设备的ARM处理器类型及版本,目前通常分为以下几种:第8代、64位ARM处理器。目前,国内Android应用生态正在向64位架构过渡。同时,移动芯片平台也将逐步弱化对32位应用的支持。第7代及以上的 ARM 处理器,是目前主流版本,大部分Android设备都使用它。第5代、第6代的ARM处理器,早期的手机用的

~ 6万+

app-release.apk 2

app-release.apk 2

解决unigui中SendFile方法无法下载apk和其他格式文件的问题

在unigui中,使用Download发送文件下载功能时,会遇到无法下载apk和其他格式文档的问题。今天就来讨论如何解决这个问题。

Winfredzhang的博客 2157

foss-apps:开源android应用程序的集合

该页面可通过以下轻松阅读: 。 酷的FOSS Android应用程序 很棒的开源应用程序的集合,以取代Android上的专有应用程序。 这些应用程序大多数都可以在FDroid上使用。 我不拥有此材料,我只是分享它,因为我认为它很酷。 目录 娱乐 档案管理员 游戏类 发射器 地图 媒体查看器和播放器 密码管理员 生产率 程式设计 安全与隐私 社交媒体 同步化 发短信 实用工具 日本动画片 ^ back to top ^ AnYme :适用于动漫的Android应用程序,可以与MyAnimeList同步。 它具有内置的AdBlocker,新版本的通知,快捷方式,建议等。 [source] [website] MoeList :另一个非官方的Android MAL(MyAnimeList)客户端,可跟踪您在动画和漫画中的进度。 查看热门图表,搜索和管理您的列表。 [sour

leensa-1.0.4-foss-releas.apk

leensa-1.0.4-foss-releas.apk

iOS从资源和代码方面为App瘦身处理

iOS从资源和代码方面为App瘦身处理

m0_60543356的博客 2607

android-v2x线路universal-release.apk

安卓产品APP安卓

Android App 瘦身总结 第一章 图片资源的优化处理

当一款App经历了大量的迭代后,apk包会越来越臃肿,这里面会存在大量的情况。比如冗余的代码、无用的资源、未合理化处理的图片等等。 在经历了疯狂的迭代后,我和我的团队发现再也不能忽视apk大小的问题了,apk的大小已经逼近70M,然而承载的业务量却似乎没有这么多,于是我开始集中精力进行apk瘦身的工作。在一系列调查和研究后,成功让我们两款app瘦身回20M。 下面就说说我在瘦身过程中的...

公众号:BennuCTech 9810

auto.js安装包:app-v6-universal-release-unsigned-signed .apk

app-v6-universal-release-unsigned-signed .apk

Ansys Lumerical 2023 R1.2新功能实战:薄膜铌酸锂调制器仿真全流程解析

本文详细解析了Ansys Lumerical 2023 R1.2在薄膜铌酸锂电光相位调制器仿真中的最新功能与应用。通过实战演示,展示了从电极配置、电场计算到模式分析的全流程,重点介绍了各向异性介电常数支持和多物理场耦合优化等关键技术,助力开发者高效设计高性能光通信器件。

weixin_28454475的博客 1207

android app 图片资源,Android App 瘦身总结 第一章 图片资源的优化处理

##Android进阶之路系列:[http://blog.youkuaiyun.com/column/details/16488.html](http://blog.youkuaiyun.com/column/details/16488.html)当一款App经历了大量的迭代后,apk包会越来越臃肿,这里面会存在大量的情况。比如冗余的代码、无用的资源、未合理化处理的图片等等。在经历了疯狂的迭代后,我和我的团队发现再也不能...

weixin_35761085的博客 286

Cygwin安装教程

简介 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件 Cygwin就是一个windows软件,该软件就是在windows上仿真linux操作系统 简言之,cygwin是一个在windows平台上运行的 linux模拟环境,使用一个Dll(动态链接库)来实现 这样,我们可以开发出Cygwin下的UNIX工具,使用这个DLL运行在W...

Errol's Blog 13万+

iOS项目优化-APP瘦身

前言 由于在上家创业公司被现在的公司收购,最终把两个APP融合成一个APP,当时只是把代码进行复制黏贴,后面一直在做开发,急着上线功能,所以我也没有对APP进行优化。项目打包之后ipa包的大小是一百多兆,下载时间太长,年初比较闲,决定来优化安装包,结合其他开发者的优化方法进行瘦身,最终变成80兆。 1、配置编译选项 (Levels选项内)Generate Debug Symbols 设置...

小菜媛的博客 593

DCM、PLL以及DLL等概念及详情

介绍DLL、PLL以及DCM的概念,总结其模块构成、工作原理、相互之间的差异与各自优势。

CLL_caicai的博客 8337

RK3568 开发实战:手动构建 Linux 4.19 内核镜像与设备树优化

本文详细介绍了为RK3568开发板手动编译Linux 4.19内核的完整实战流程。从环境搭建、源码获取、内核配置,到设备树深度定制与优化,再到镜像打包与烧写,旨在帮助开发者脱离官方SDK依赖,实现对嵌入式Linux系统的完全掌控,提升硬件适配与性能优化能力。

weixin_29175469的博客 269

app瘦身

经过多次版本迭代,app中难免会产生不少冗余代码和无用资源,整个app越发臃肿。 再加上目前我们的app整体架构变成了hybrid,很多native代码都不需要了,考虑到要为客户的流量负责,减小应用的大小已经迫在眉睫。 整体改造方案分为三部分:

zhangyangsk8的专栏 5054

MacBook上玩转国民技术N32G430:从零搭建ARM开发环境(VSCode + pyOCD)

本文详细介绍了在MacBook上搭建国民技术N32G430的ARM开发环境,涵盖VSCode配置、pyOCD调试及一键编译烧录全流程。通过Homebrew安装工具链、配置Python环境及VSCode插件,开发者可在MacOS高效开发嵌入式应用,特别适合国产芯片N32G430的开发者参考。

weixin_30614109的博客 436

APP性能优化

APP性能优化分:卡顿处理、耗电处理、安装包瘦身、APP启动四大方面。 文章目录1、卡顿处理1.1、卡顿分析1.2、卡顿优化1、CPU 优化2、GPU 优化离屏渲染1、离屏渲染消耗性能的原因2、哪些操作会触发离屏渲染?1.3、卡顿检测2、耗电处理2.1、好点主要来源2.2、耗电优化3、安装包瘦身4、APP的启动4.1、APP启动分类4.2、APP启动时间分析4.2.1、dyld 阶段4.2.2、runtime 阶段4.2.3、main4.3、APP启动优化5、问答拓展 1、卡顿处理 1.1、卡顿分析 APP

chenzimin_blog 4413

爬虫逆向:Hook 技术原理与实战

Hook 技术​(钩子技术)是一种通过拦截和修改程序执行流程的技术手段。它允许开发者在目标程序的特定位置插入自定义代码,以改变程序的默认行为或获取运行时信息。Hook 技术广泛应用于调试、逆向工程、性能分析、安全防护等领域。Hook 技术在爬虫逆向中非常有用,能够有效获取和修改目标程序的数据。通过合理使用 Hook 工具和技术,可以显著提升爬虫的效率和成功率。但使用时需注意法律和道德问题,确保行为合规。

数据知道的博客 1万+

【如何利用扩展卡尔曼滤波解决跟踪毫米波雷达目标】

笛卡尔坐标系(非极坐标系):使用两个垂直的轴(通常是x轴和y轴)来确定一个点的位置。你沿着这两个轴移动确定的距离来找到这个点。极坐标系:使用一个角度和一个距离来确定一个点的位置。首先,你转到一个特定的方向(角度),然后沿着那个方向移动确定的距离来找到这个点。希望这个例子能帮助你理解两种坐标系的基本概念!

小秋 AI SLAM 入门实战教程 885

android app Lose Weight

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

王涛 637

在 RAP 中把业务对象“搬到网口上”:service definition 与 service binding 的全流程、范式与实战

本文解析了SAP ABAP开发中service definition和service binding的关键作用。service definition负责选择要暴露的CDS实体和行为,形成服务模型;而service binding则将服务绑定到具体协议(如OData),生成可访问的端点。两者分离带来三大优势:支持同一模型多重发布、降低环境迁移耦合度、强化安全治理。文章通过预订业务对象的端到端示例,展示了如何从CDS建模到生成Fiori Elements预览。最后以售后工单业务为例,说明这种架构如何支持内外服务

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 390

iOS 瘦身之道

App 的包大小做优化的目的就是为了节省用户流量,提高用户的下载速度,也是为了用户手机节省更多的空间。另外 App Store 官方规定 App 安装包如果超过 150MB,那么不可以使 OTA(over-the-air)环境下载,也就是只可以在 WiFi 环境下载,企业或者独立开发者万万不想看到这一点。免得失去大量的用户。 同时如果你的 App 需要适配 iOS7、iOS8 那么官方规定主二进制...

weixin_34258078的博客 388

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android app性能优化_Android性能优化之Apk 瘦身优化

瘦身主要是下载转换率提高头部App都有Lite版本渠道合作产商要求APK 分析工具ApkTool 反编译工具官网:https://ibotpeaches.github.io/ApkTool apktool d students.apkAnalyze apkAndroid studio 2.2之后使用 - 查看apk组成大小,各资源占比 - 查看dex文件组成 - 可以进行apk对比通过Analyz...

weixin_39559277的博客 354

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android App包瘦身优化实践

随着业务的快速迭代增长,美团App里不断引入新的业务逻辑代码、图片资源和第三方SDK,直接导致APK体积不断增长。包体积增长带来的问题越来越多,如CDN流量费用增加、用户安装成功率降低,甚至可能会影响用户的留存率。APK的瘦身已经是不得不考虑的事情。在尝试瘦身的过程中,我们借鉴了很多业界其他公司提供的方案,同时也针对自身特点,发现了一些新的技巧。本文将对其中的一些做详细介绍。 在开始讲瘦身技巧之前,先来讲一下APK的构成。 APK的构成 可以用Zip工具打开APK查看。比如,美团App 7.8.6..

一个有情怀的程序猿博客 1110

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: Android使用反射控制按钮点击过快
下一篇: ASM Bytecode Viewer的下载地址
MatrixGame
博客等级 码龄9年 40粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatrixGame

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值