资源优化
1、按需添加第三方库,避免引入重复库。
2、 png转svg,再使用svg转成vector格式。
3、 删除多余的so库。
删除多余的so库,执行这一操作的前提是:程序所运行的系统 CPU 架构固定是 Android CPU 架构中的某一个。例如:部分第三方提供的 so 库是包含了 armeabi
、armeabi-v71
、arm64-v8a
、x86
等库文件,如果你的程序只运行在 armeabi
CPU 架构上,则可以把其它的 so 库文件删除。
4、 删除多余的 mipmap
文件夹。
一般图标资源使用 mipmap-xhdpi
足够用了,更大的屏幕则使用 mipmap-xxhdpi
、mipmap-xxxhdpi
的分辨率,已经使用 mipmap-xhdpi
或其它更大分辨率的程序,应删除比它小的分辨率文件。
5、 删除未使用到的资源文件。
可通过 Android Studio 菜单栏的 Refactor
→ Remove Unused Resources
功能一键移除未被使用的 drawable
、mipmap
、layout
以及 colors.xml
、strings.xml
文件里面的 color
、string
。
6、动态加载.so文件。
.so
文件可以在用户安装应用到手机后再从服务器上下载到手机的 data
目录下,加载的时候使用绝对路径在 static
关键字里加载。
static {
System.loadLibrary("so文件")
}
- 1
- 2
- 3
参考文章
1、Android 应用资源概述
7、使用插件化。
插件化技术支持动态加载代码和动态加载资源,把 Application
的一部分分离出来,对于业务庞大的项目非常有用,极大的分解了 Application
的大小。但又因为插件化需要一定的技术保障和服务端的系统支持,有一定的风险,建议酌情选择。
代码混淆
代码混淆(Obfuscation)是将计算机程序的源代码或机器代码,转换成功能上等价,但是难于阅读和理解的形式的行为。简单来说,就是简化函数名、变量、常量名称,通过减少字符数以达到减小安装包大小的方式。
启用混淆只需要打开 Android 项目,在 Application Model 下中找到 build.gradle
,在该文件添加如下配置即可开启混淆:
android {
// 打包 release 包时执行
release {
// 启用混淆,默认使用 R8 编译器
minifyEnabled true
// 资源压缩
shrinkResources true
// 定义 自定义混淆规则的文件
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
上面混淆的方式仅适用于代码简单、封装少的项目。项目复杂还请自定义混淆规则,详情请查看往期文章????【Android】App攻防之代码混淆