先给出一张Google官方给出的Apk构建流程

安装包的大致构成

1. assets目录
2. lib目录
3. res目录
4. META-INF 目录
5. AndroidManifest.xml
6. classes.dex
7. resources.arsc

1. assets目录

存放一些配置文件、资源文件,assets不会自动生成对应的ID,通过AssetManager类的接口获取。

2. lib目录

存放程序依赖的jar、aar、so库

3. res目录

res是resource的缩写,存放资源文件,会自动生成对应的ID并映射到.R文件中,通过资源ID使用。

4. META-INF 目录

保存应用的签名信息,签名信息可以用来验证APK文件的完整性。

5. AndroidManifest.xml

用来描述Android应用的配置信息,一些组件的注册信息、可使用权限等。

6. classes.dex

Dalvik 字节码程序,App 打包时通过Android SDK 中的dx工具将java字节码转换为Dalvik 字节码。

7. resources.arsc

记录资源文件和资源ID之间的映射关系,用来根据资源ID寻找资源。

减少安装包大小常用方案
可使用Android Studio Build 菜单下Analyze APK工具分析APK文件大小分布
1. so包

so包的支持架构可选部分,比如armeabi-v7a
或者对so文件进行重新编译,因为某些第三方,其实,只用到其中很小一部分

2. 代码混淆

使用proGuard代码混淆器工具,它包括压缩、优化、混淆等功能。
它删除没有用的类,字段,方法与属性,使字节码最大程度地优化,使用剪短且无意义的名字来重命名类、方法、字段。
build.gradle中编译release版本时加入shrinkResources true 开启缩减无用资源的功能。

3. 资源优化

使用Android Lint 删除冗余资源。

4. 图片优化

使用AAPT(Android Asset Packaging Tool 安卓资源打包工具) 对PNG格式图片做压缩,降低图片色彩位数等。
使用TinyPNG对图片资源进行压缩(https://tinify.cn/)
使用WebP图片格式、.9格式图片

5. 尽量不在项目中使用帧动画

一个帧动画会包含很多图片,可以使用lottie-android库

6. 将大资源文件放到服务端

按需下载使用

7. 插件化

功能放在服务器上,按需下载对应模块。

8. 微信资源混淆 AndResGuard原理

通过混淆资源ID长度同时利用7z深度压缩,减少了apk包大小
混淆后在安全性方面有一点提升,提高了逆向破解难度
https://github.com/shwenzhang/AndResGuard

Android App 性能优化之安装包大小相关推荐

  1. Android APP性能优化

    转载自:https://www.cnblogs.com/qwangxiao/p/8727229.html Android APP性能优化(最新总结) 导语 安卓大军浩浩荡荡,发展已近十个年头,技术优化 ...

  2. Android APP性能优化(一)

    Android APP性能优化(最新总结) 安卓大军浩浩荡荡,发展已近十个年头,技术优化日异月新,如今Android 8.0 Oreo 都发布了,Android系统性能已经非常流畅了.但是,到了各大厂 ...

  3. Android App 性能优化系列结语篇

    Android App 性能优化系列结语篇 原文出处:http://gold.xitu.io/post/581f4ad667f3560058a33057 关于Android App的优化, 从第一篇的 ...

  4. Android App性能优化系列

    Android App性能优化系列 关于Android App的优化,从第一篇的计划开始,到内存优化的系列文结束,不知不觉近三个月的时间,写了十五六篇相关的博文,算是对自己的知识的一个系统化,也希望能 ...

  5. Android App 性能优化总结

    Android App 性能优化系列结语篇 转发自:http://blog.lmj.wiki/2016/11/06/app-opti/app_opt_summary/#more 关于Android A ...

  6. Android App 性能优化之稳定性

    Android App性能优化之稳定性问题分类 1. ANR 2. Crash 3. 应用退出 1. ANR ANR(Application Not Responding 应用程序无响应) 1.1大致 ...

  7. Android App性能优化十技巧

    无论锤子还是茄子手机的不断冒出,Android系统的手机市场占有率目前来说还是最大的,因此基于Android开发的App数量也是很庞大的.那么,如何能开发出更高性能的Android App?相信是软件 ...

  8. Android App性能优化之内存优化

    为什么要进行内存优化? 1.App运行内存限制,OOM导致App崩溃 2.App性能:流畅性.响应速度和用户体验 Android的内存管理方式 Android系统内存分配与回收方式 ●   一个App ...

  9. Android App性能优化总结

    优化方向 Android系统性能已经非常流畅了.但是,到了各大厂商手里,改源码自定系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在 ...

最新文章

  1. 双十一秒杀架构模型设计实践!
  2. 天猫国际618一骑绝尘,占中国跨境进口电商总订单超七成
  3. 亿级商品详情页架构演进技术解密 | 高可用架构系列 二
  4. python 拓扑排序 dfs bfs_拓扑排序的DFS和BFS
  5. javascript --- 再读作用域和闭包
  6. mysql not is null_转!!mysql 字段 is not null 和 字段 !=null
  7. CVPR 9999 Best Paper——《一种加辣椒的番茄炒蛋》
  8. 530并行日:用超算更省心
  9. gels imagej 图片处理_如何用ImageJ进行粒度分析
  10. Facebook AI研究员田渊栋:2021年年终总结
  11. 前端-回到顶部效果总结
  12. linux mysql导出表中的数据_MySQL导出指定表中的数据
  13. js生成execl表格
  14. 微软应用商店microsoft store 打不开
  15. 酷派5890 ROM教程
  16. Docker 容器的--restart参数
  17. C#编写画直线,简单画线,鼠标交互画线,画一条线
  18. 什么是相对论?相对论是什么?用人话讲讲相对论
  19. 程序员的自我进化:互联网公司套路多,如何避免自己被无偿辞退?
  20. 2-10、秋招年6月晋升期——《硬件架构的艺术-数字电路的设计方法与技术》

热门文章

  1. 运维常识:什么是关系数据库?
  2. 什么是SharePoint?
  3. 项目经理提升领导力的6个重点
  4. Cookies或Session的区别
  5. 环境艺术设计计算机学什么,学环境设计用什么电脑好-环境设计电脑推荐
  6. p40pro鸿蒙系统好用吗,华为p40pro可以升级鸿蒙系统吗?
  7. CSS装饰+选择器拓展
  8. 在Linux系统下XAMPP安装与配置
  9. Localspace Viewer下载影像并进行地形分析
  10. 离开武汉的500万人去哪里了?别让他们流浪街头!