前言:这是本人学习过程中的一些笔记,可能具体逻辑不会那么连贯,如果有错误之处,敬请斧正。
apk中文件大致介绍
- aapt对应 -> R资源文件
- ressources.arsc -> 配合R.java完成对应数据提取的辅助信息。
六点优化处理
1.优化图片
svg
- 缺点:渲染速度慢,需要经过一次生成才能由cpu渲染,5.0之前不支持。
- 优点:扩展性好,动态渲染,可以在生成的那里做处理,然后相当于是一个xml文件,所以占用空间小。
- 适用场景:图标。 png
- 使用场景:logo jpg
- 缺点:不支持透明通道,透明会变成白色保存,有损压缩,会导致图片拉大变糊。
- 使用场景:高保真图标 webp
- 使用场景:网络传输
资源选择:一般采用720规格做一套图,不会做多套图。
2.删除无用引用(慎用)
3.进行代码混淆和压缩
minifyEnabled = true 然后写混淆文件,注意反射的使用。
4.资源缩减
shrinkResources = true 只管资源,不处理java文件,会把资源打进包中,不会删除文件,但是会将无用资源压缩,比如将图片替换成空白图片。
5.备用资源剔除
as会将几十个版本的语言放到strings的映射表中,如果只需要特定的语言, 例如英语:
resCondigs 'en',在defaultConfig中写入即可。
一份string可以解决所有翻译?(怎么操作,应该是备用资源启用,且里面存在的字符是android内置翻译,自己业务逻辑并不能这样多语言处理)
6.so文件优化
处理不需要的so:
- so包是用于支撑cpu架构指令的处理,是由ndk编译处理的动态库
- android使用arm架构,但arm也分很多不同的版本。
只配置需要的so库即可。不处理的话,所有so库都会被打包进去。 一般生产包ndk{abiFilters "armeabi" , "armeabi-v7a","armeabi-v8a"}就可以.
- 可以用splits做分包处理,同时打出不同架构的包。
远程so:
- 文件需要加密和签名!不然入侵者可以很轻易替换你自己的包。
- 流程就是首先检查本地有没有so文件,没有就从网络拿
Matrix ApkChecker 使用
官方文档android安装包的分析检测工具
- 大致是先下载jar包,根据自己的包写config.json配置。然后运行命令
java -jar 名字.jar --config config.json