加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

类比于微信,怎样对Apk举办极限压缩,谈下Android压缩8大步

发布时间:2019-10-11 23:50:11 所属栏目:业界 来源:SoftwareGames
导读:简介 跟着项目标不绝迭代,代码量跟资源文件不绝增多。那么就会呈现打包后的 APK 文件越来越大,假如溘然有一天你们老板或率领叫你优化 APK 巨细,你还不知道怎么优化那就有点说不外去了,这篇文章咱们就来一路说明并优化 APK 体积巨细吧。 说明 APK 资源
副问题[/!--empirenews.page--]

简介

跟着项目标不绝迭代,代码量跟资源文件不绝增多。那么就会呈现打包后的 APK 文件越来越大,假如溘然有一天你们老板或率领叫你优化 APK 巨细,你还不知道怎么优化那就有点说不外去了,这篇文章咱们就来一路说明并优化 APK 体积巨细吧。

说明 APK 资源占用

留意:

我是在 GitHub 找了一小我私人气较量高的开源项目,必要的话本身可以点击下载,本身下手实行一番.

类比于微信,怎样对Apk举办极限压缩,谈下Android压缩8大步

说明器材直接用的 AS Build/Analyze APK

从上面图中得出 assets > classes.dex > res > lib 个中资源文件占用最大。

下面我们就来看看怎么减小 APK 巨细吧,

优化 APK 体积八大步

1. 将图片转换为 webp 名目

Webp 观念

WebP 是一种同时提供了有损压缩与无损压缩的图片文件名目,派生自视频编码名目 VP8。WebP 最初在2010年宣布,方针是镌汰文件巨细,但到达 和 JEPG 名目沟通的图片质量,但愿可以或许镌汰图片档在收集上的发送时刻。2011年11月8日,Google 开始让 WebP 支持无损压缩和透明色的成果。

按照 Google 较早的测试,WebP 的无损压缩比收集上找到的 PNG 档少了 45% 的文件巨细,纵然这些 PNG 档在行使 PNGCRUSH 和 PNGOUT 处理赏罚过,WebP 照旧可以镌汰 28% 的文件巨细。就今朝而言,Webp 可以让图片巨细均匀镌汰 70% 。WebP 是将来图片名目标成长趋势。

PNG / JPG to Webp

类比于微信,怎样对Apk举办极限压缩,谈下Android压缩8大步

点击图片可能文件夹右键选择 Convert to Webp 名目,将 png / jpg 图片压缩为 webp 名目图片.

类比于微信,怎样对Apk举办极限压缩,谈下Android压缩8大步

最后我们只镌汰了不到 200 kb 阁下,有也许项目图片资源原来就没有多大,只是太多小图片导致的。

应用场景及上风

  • 客户端软件,内嵌了基于 Chromium 的 webview,这类赏识器中应用的网页是可以完全行使WebP 名目,晋升加载渲染速率,不思量兼容。
  • 用 node-webkit 开拓的措施,用 WebP 可以镌汰文件包的体积。
  • 移动应用 或 网页游戏 ,界面必要大量图片,可以嵌入 WebP 的解码包,可以或许节减用户流量,晋升会见速率上风:
  • 对付 PNG 图片,WebP 比 PNG 小了45%。

2. 去除多说话

在 app/build.gradle 添加

  1. android{ 
  2.  ... 
  3.  defaultConfig{ 
  4.  ... 
  5.  //只保存英语 
  6.  resConfigs "en" 
  7.  } 

类比于微信,怎样对Apk举办极限压缩,谈下Android压缩8大步

这里我们发明镌汰了或许 200 kb

3. 去除不须要 so 库

通过反编译 Android 微信版本 得知,微信壹贝偈配了 armeabi-v7a 架构,那么我们删掉其余库的支持吧。

  1. android{ 
  2.  ... 
  3.  defaultConfig{ 
  4.  ... 
  5.  ndk { 
  6.  //配置支持的SO库架构 
  7.  abiFilters "armeabi-v7a" 
  8.  } 

类比于微信,怎样对Apk举办极限压缩,谈下Android压缩8大步
又优化了差不多 600 kb ,继承。

4. 去除无用资源 Link 搜查(审慎删除)

观念

Lint 是 Android Studio 提供的 代码扫描说明器材,它可以辅佐我们发明代码布局 / 质量题目,同时提供一些办理方案,并且这个进程不必要我们手写测试用例。代码迭代版本一多,很轻易会遗留一些无用的代码、资源文件,我们可以行使 Lint 举办破除。

怎么行使 Link 搜查

打开 AS 器材,找到 Analyze > Run Inspection By Name > unused resources

优化

类比于微信,怎样对Apk举办极限压缩,谈下Android压缩8大步

发明我们 link 或许优化了 700 kb继承。

留意

由于 link 是搜查有没有引用来做的判定是否行使了资源,那么假如是这种方法勒,以是在删除的时辰必然要审慎。

  1. //动态获取资源 id , 未直接行使 R.xx.xx ,则这个 id 代表的资源会被以为没有行使过(相同不能夹杂反射类) 
  2. int indetifier =getResources().getIdentifier("img_bubble_receive", "drawable", getPackageName()); getResources().getDrawable(indetifier); 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读