先给出一张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. 代码混淆

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

2. 资源优化

使用Android Lint 删除冗余资源。

3. 图片优化

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

4. 插件化

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

更多相关文章

  1. Android(安卓)view更改背景资源,padding消失的问题
  2. Android中的Uri和ContentProvider
  3. [Android]资源存储方法
  4. 了解Android(安卓)Studio jniLibs目录
  5. 设置 quick-cocos2d-x 在 Mac 下的编译环境
  6. 国内优秀Android学习资源汇总全集
  7. BlobCache算法详解
  8. android 字节流缓冲区 字节缓冲流 读写SD卡的内容
  9. cocos2d-x 3.0 引用第三方库 及编译成apk时android mk文件写法

随机推荐

  1. Linux系统Oracle12.2 RAC集群实施维护_Or
  2. 【linux】Centos7 防火墙操作
  3. 鸟哥的Linux私房菜——基础学习篇(第三版)
  4. keepalived for linux(HA 高可用集群)
  5. Cerebro 一个跨平台的桌面快捷使用工具
  6. Linux Mint 17下Sublime插件Emmet的安装
  7. Linux内核源代码情景分析读书笔记(5)-关于
  8. thinkphp连接mysql数据库查询数据显示
  9. Linux多线程实践(一)线程基本概念和理论
  10. 由看雪.Wifi万能钥匙 CTF 2017 第4题分析