1. 大图使用WebP
使用WebP可以非常有效降低图片的大小,而且不会降低图片的质量。在Android Studio右击图片就可以转换了,非常方便。
2. 使用TinyPNG压缩
https://tinypng.com 是一个非常好的有损压缩工具,降低部分质量情况下可以大幅度降低图片大小,有对应的开放API,也有对应的IEDA插件也方便我们使用。
3. 去掉不必要的 so 库
实际上我们只需要支持armeabi-v7a即可。
android{
...
defaultConfig{
...
ndk {
abiFilters "armeabi-v7a"
}
}
4. so 动态下载
so文件是占据很大的体积,对于一些不常用的功能,我们可以考虑动态下载,就无需打包到apk中。
System.load(String filePath);
5. 去除无用资源
Android Studio提供了 Remove Unused Resource
功能,可以方便我们去除无用的资源文件,但是使用的时候需要谨慎,如果代码中存在getIdentifier
方式获取资源文件,切记不要删除,需要写入raw/keep.xml
文件中,避免被删除,特别要注意第三方库的资源文件。
Refactor > Remove Unused Resource
下面是一个典型的案例
raw/keep.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@style/rc_*,@style/RC*,@style/Rc*,@xml/rc_*,@drawable/rc_*,@array/rc_*,@layout/rc_*,@color/rc_*,@dimen/rc_*,@string/rc_*,@integer/rc_*,@drawable/u*">
</resources>
6. shrinkResources
shrinkResources 和Remove Unused Resource
效果是差不多的。Remove Unused Resource 是物理移除,shrinkResources 是打包过程中去掉无用的资源文件,也是通过raw/keep.xml
文件来避免没有直接引用的文件被误删。
buildTypes {
release {
minifyEnabled true
shrinkResources = true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
7. AndResGuard
AndResGuard 是微信团队开源的资源文件混淆工具,是一个帮助你缩小APK大小的工具,他的原理类似Java Proguard,但是只针对资源。他会将原本冗长的资源路径变短,例如将res/drawable/wechat变为r/d/a,不但可以降低apk体积,也可以避免资源文件被盗用。
8. Java 代码混淆
开启代码混淆也是降低apk体积的重要手段,可以删除没有使用的代码,并且可以对代码进行压缩。每一个都应该开启混淆,这是保证代码安全的非常重要手段。
网友评论