挪移端技术的脑子方式以及优化措施,你值患上具备

探索2024-05-17 13:29:4035

一、挪移脑方我是端技奈何样思考这件使命的

APK是零星装置包的文件格式,对于这个话题着实是术的式及上具一个旧调重弹的问题,不论是优化公司外部,仍是措施外部收集,祖先尊长已经总结出良多措施以及纪律。值患不外随着挪移端技术近两年的挪移脑方飞速睁开,一些新的端技脑子方式以及优化措施也逐渐泛起以及成熟起来。笔者在实际历程中踩过一些坑,术的式及上具收获了一些履历,优化在这里做个思考以及总结,措施以是值患随笔给巨匠,愿望对于巨匠处置相关使命的挪移脑方时候有所辅助以及参考,同时也是端技闻一知十,愿望巨匠配合品评辩说这个凋谢性的术的式及上具话题。

对于为甚么APK要瘦身,这个未多少说,只从三个方面絮聒一下,对于用户(概况客户)来说,APK越大,不才载装置历程中,他们破费的流量会越多,装置期待光阴也会越长;对于产物自己,象征着下载转化率会越低(由于竞品中,用户有更多机缘抉择谁人人验最佳,功能至多,功能最佳,包最小的);对于研发来说,是一种优化改善技术的机缘。

欲瘦身,咱们先找找胖的原因以及下场。按目的-道路-资源的脑子方式,找原因以及下场有如下多少条道路,一是拍脑壳,按自己的履历以及分说,致使是主不雅想象;二是去搜查引擎找关键字,逛种种技术论坛听技术大牛们奈何样说,看种种技术文章抽取提炼;三是用一种可丈量的工具概况措施发现下场。

前两种不赘述,我这里说说第三种措施。用一种可丈量的工具概况措施来合成,所谓工欲善其事,必先利其器。这个器可能可能自己铸造,也可能用现成的。这里推选一个在线apk合成工具,由于是外部工具,以是巨匠请在运用历程中,不要上传未宣告进来的产物,为了数据清静,笔者这里拿一个上开源的名目作为瘦身示例。

二、追寻下场

是美国哥伦比亚大学的博士守业团队研收回来的合成 app功能目的的零星,合成的方式有动态以及动态两种方式,其中动态合成可能合成出APK装置包中大文件排行榜,种种驰名SDK的巨细以及占代码部份的比例,种种规范文件的巨细以及占排行,种种驰名SDK的措施数以及占所有dex中措施数的比例,空论未多少说,下面上高清无码大图看看颜值吧。

假如想运用合乐成用合成自己的产物,请登录并上传自己产物的apk包,所有功能当初均无偿运用,假如是想合成 Play上已经宣告的产物,可能直接点击"Play Apps"魔难,还可能运用搜查功能凭证运用名以及包名魔难服从。再次夸张下,请不要上传任何未宣告的产物。

登录

瘦身妄想_贾玲瘦身妄想_瘦身妄想演讲

上传apk文件

瘦身妄想演讲_瘦身妄想_贾玲瘦身妄想

合乐成果摘要,可能看到一些概览的信息,apk文件巨细,总的措施数

瘦身妄想_贾玲瘦身妄想_瘦身妄想演讲

文件巨细合成概况页,大文件列表,这里列出的是apk文件中逾越100k的文件排行,这里的文件巨细指的是apk文件中的巨细

瘦身妄想_贾玲瘦身妄想_瘦身妄想演讲

种种驰名SDK的巨细以及占代码部份的比例,这里当初能识别出 , JSON , Play , , Glide, , SDK, , Gson等等,展现App中自己编写的代码部份

贾玲瘦身妄想_瘦身妄想_瘦身妄想演讲

种种规范文件的巨细以及排行

瘦身妄想_贾玲瘦身妄想_瘦身妄想演讲

种种驰名SDK占所有dex中措施数的比例

瘦身妄想_瘦身妄想演讲_贾玲瘦身妄想

种种驰名SDK的措施数排行榜

贾玲瘦身妄想_瘦身妄想_瘦身妄想演讲

看完这个apk内剖图是否有一种神清气爽的感应!我把这个合成工具比做咱们家买的智能体重秤,可能称体重,脂肪含量,骨重,骨密度,肌肉含量等等,那末,咱们是否发现了一些下场,进而把这些下场以及咱们以前靠履历以及一拍脑壳的原因可能用逻辑分割在一起。

那末,咱们接下来可能经由火析数据整理出咱们的优化目的

大文件排行榜里,有11张png文件的巨细逾越了100k,记住,这可是缩短之后的啊;

大文件排行榜里,.arsc的巨细挨近2M,这也是一个优化点;

大文件排行榜里,.dex挨近3M,.dex是代码的载体,这块的优化需要细分,再去看看细分SDK的排行榜;

组件占比环图里, , JSON 以及 Play 是三方库的前三甲;

文件规范排行榜里,png, dex 以及arsc是前三甲;三、梳理优化目的

以是咱们的目的是不蛀牙,不同过错,是下面的目的:

png图片优化;

.arsc文件的优化;

代码优化

3.1图片优化的试验

首先是第一个目的,图片的优化,慢点,咱们看看这些图为甚么这么大先,精确的说,为甚么这些图在apk(着实便是zip文件)里这么大,好了,上工具合成。

这次用了一些重大的工具组合,零星自带的cmd就好。

瘦身妄想演讲_瘦身妄想_贾玲瘦身妄想

命令实施的服从如下

瘦身妄想_瘦身妄想演讲_贾玲瘦身妄想

恩,所有的png文件居然是STORE的方式存储到apk里的,对于zip里的STORE以及,详见 )

深入的说,当文件是的方式存储到zip,展现这个文件并无经由缩短,假如是Defl:N的方式,展现经由 的方式缩短存储到zip。

这看起来有点不同理,png原封不动的放入zip,尽管最后产出的apk会比力大。那末,若何处置呢?笔者首先尝运用 的方式,发现以及都未能处置下场。在上发现一个开源名目,试了集成到名目中,再看成果如下:

优化前:

瘦身妄想_瘦身妄想演讲_贾玲瘦身妄想

字节

优化后:

瘦身妄想_贾玲瘦身妄想_瘦身妄想演讲

艰深zip缩短: 字节 (缩短了快要17%)

接管7zip缩短:字节 (缩短了快要19%)

再看看这个工具做了甚么,比力下开启资源混合先后

优化前

瘦身妄想演讲_贾玲瘦身妄想_瘦身妄想

优化后

贾玲瘦身妄想_瘦身妄想_瘦身妄想演讲

资源(png, xml, jpg等)称谓混合,资源道路称谓混合以及称谓长度缩短;

原本以方式存储到zip中的png文件被改为为了(艰深缩短存储)方式;

意外发现.arsc, META-INF/*.SF 以及 META-INF/*.MF变小了,而且是解压之后的文件巨细也变小了。

用apk反编译神器jadx内窥apk追寻底细

瘦身妄想演讲_贾玲瘦身妄想_瘦身妄想

原本apk中资源(png, xml,以及文件)的相对于道路会寄存到META-INF/*.SF 以及 META-INF/*.MF中并为每一个资源文件合计SHA1值并存储在这两个文件中,至于为啥这么做以及这两个SHA1有啥差距以及熏染请参考收集上对于这方面知识的文章,已经逾越本文的主题以是这里再也不赘述。

对于.arsc文件

贾玲瘦身妄想_瘦身妄想_瘦身妄想演讲

很简略看进去它是资源文件索引表,以是,看到这里巨匠理当清晰这三个文件为啥会变小了吧。

3.2一次意外的发现

顺着.arsc往下看,发现一个幽默的工具,

瘦身妄想_贾玲瘦身妄想_瘦身妄想演讲

这又将成为一个优化点,去除了那些没用的翻译资源,引入一些第三方的SDK,每一每一这些SDK带了良多翻译资源在概况,好比 库,去掉后咱们来看看下场。

假如咱们只保存英文,尽管只是个试验,事实中看详细情景了,

接管7zip缩短:字节 (缩短了快要22%,再削减3个点)

尽管,真正的名目里不可能这样,可是蚊子肉也是肉啊!

着实,我想说的是这提供了一种优化思绪,便是运用的配置装备部署干掉无用的资源,同样的可能用在so当地库上,分说率(配置装备部署已经)上。

配置装备部署示好比下:

瘦身妄想_瘦身妄想演讲_贾玲瘦身妄想

记患上包在{ }中间哦。那末,有人要问了,abi里肿么不x86?风闻intel提供了一个处置妄想叫,是一个运行在x86配置装备部署上的中间件,可能将arm转码为x86的指令,不外功能很低,有些运算型的,好比合计MD5以及SHA1,致使不如java,笔者已经做过测试比力,又是另一个话题,此处不赘述,感兴趣的读者可能移步。

到此为止,咱们已经在朝第一个目的迈进,不经意间发现了第一个目的以及第二个目的之间的关连,以是运用资源混合工具,告竣为了第二个目的。

运用7zip缩短,咱们对于全部包妨碍了2个点的缩短,这是一个逾越预期的下场。

3.3图片优化的措施

对于第一个目的,咱们的道路尚未停止,拍脑壳想进去的道路是缩短png,非alpha图转成jpg,尚有甚么?以是去种种技术论坛逛了一圈,请示了种种技术大牛,梳理的道路如下:

一、手动lint魔难,手动删除了代码中不援用到的资源,实际下场不等。

在 中掀开“” 而后抉择" Code...",规模抉择全部名目,而后点击"OK"

配置装备部署如下图

瘦身妄想演讲_贾玲瘦身妄想_瘦身妄想

二、剧本中开启

剧本参考如下

贾玲瘦身妄想_瘦身妄想_瘦身妄想演讲

配合运用下场更佳,详见用法以及留意

接管7zip缩短:字节 (缩短了快要23%,再削减1个点)

三、运用图片缩短工具,缩短png图的巨细,将非alpha的图转换成jpg方式,对于这点共事以及收集上的大牛们已经整理的很详细了,我这里做重大总结,欲知概况,请见附录的参考。

运用,我只想说咱们在公司做产物,此妄想慎用,上传任何未宣告产物的内容到外部收集,都有可能引起数据泄露,以是慎用此妄想。下面说替换妄想。

以上工具太散,有无集成化的工具,谜底是“有”

@心伦 童鞋开拓的

@姐夫童鞋开拓的er

png转成jpg格式,详细下场不等。

四、最终大杀器,png转成webp,对于webp,更多概况请参考google民间文档以及安卓开拓者在线参考

先上下场图:

瘦身妄想演讲_贾玲瘦身妄想_瘦身妄想

接管7zip缩短:字节 (缩短了快要53%,再削减30个点)

没看错吧,是30个点,当初apk的巨细是原始apk巨细的一半不到,而我做的,一行代码木有修正,仅用了一些工具而已经!

说人话,我木有吃减肥药,木有绝食,体重却轻了一半!!!

可是,当初却没能用到名目中,由于有两个坑

对于第一个目的,图片资源的优化,就写到这里了。

3.4代码优化

第二个目的已经告竣,剩下第三个目的,代码的优化,梳理如下优化道路:

一、开启的代码优化

le('-.txt'),'-.txt'

改为

le('--.txt'),'-.txt'

开启代码优化后的留意点请参见附录。

二、去除了无用的库

假如apk反对于的最低版本是API14,而代码中没实用到高于api14的api就能思考拿掉全部 库。

三、用更小的库替换妄想

假如只用到了google统计,那末就不要把全部 play 都集成进来,只集成需要的部份。

四、定期整理销毁的代码

定期删除了无用的逻辑以及过时的营业功能模块,以及销毁的A/B test代码。

五、营业模块接管插件化框架,代码动态从云端拉取

插件化,这是另一个课题了,这里不赘述。

apk瘦身记最终的下场

字节缩短到字节, 缩短了快要53%

总结剧本中开启资源混合以及资源缩短

用7zip替换zip

剧本中开启代码混合优化以及无用资源删除了

用更小的图,运用缩短工具缩短图片巨细

去除了无用的资源,语言,当地so库,二方三方库以及分说率

用更小的库

试验将 库残缺踢出你的名目

定期整理代码

试验用H5编写界面,图片云端取患上

试验插件化营业模块

追寻到zip文件夹中所实用STORE方式存储的文件(不限于raw目录下),试验缩短,以及替换妄想加载这些资源

试验webp的图片加载妄想,谋求突破

最后,不断学习以及试验新的优化妄想

以此文献给“唯瘦身与产物不可辜负”的技术们!!!

附录

若何做到将apk巨细削减6M

APP最终瘦身指南

APK瘦身实际

本文地址:http://n.3x5h33e.cn/html/87b099241.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

全站热门

976分!西蒙尼成西甲历史取分至多的主帅

台企耽忧中国光伏企业双重预约取患上较低报价,行业资讯

“十面霾伏”终散去 泉城迎来强援“弱冷空气”

进一步增强燃气清静规画使命 实用提防以及妨碍此类事变爆发

德罗西:咱们直到点球后才转变心态,必需至少确保获知足头等六名

PPG玻璃工业迷信家取患上2012卡内基迷信奖,企业视界

减速增长重点名目建树 确保开好局起好步

甚么是远亲立室(对于甚么是远亲立室的根基情景剖析介绍)

友情链接