android 性能优化
android性能优化
性能优化分为几个方向:
- 内存优化
- 电量优化
- 渲染优化
- size大小优化
- 异常捕获
apk瘦身
针对与apk大小优化而言,
首先需要知道apk中主要结构,了解其中是哪些部分比较大。
然后来针对性优化。
一般而言比较占用的是:资源文件、架构文件(.so)
资源文件优化
针对资源文件,首先我们去除没有被使用的资源,然后就是降低所用资源的大小。
在app/build.gradle文件中设置shrinkResources true
1 | release { |
则会在Gradle打包release apk时,自动忽略未使用的资源文件,包括:图片、xml
但要注意此时也会忽略隐式调用的资源文件,如通过反射调用,或者react-native中在js调用drawable木土图片,
在这两种场景时,都会被忽略。
针对这种场景,可以通过keep文件,保持这些资源文件不会被忽略。
在res目录下新建xml目录,在xml目录下新建文件keep.xml
1 | <?xml version="1.0" encoding="utf-8"?> |
其中tools:keep是强制不忽略,tools:discard是强制忽略
上面讲述的是去除无用资源,还有我们可以去除无用的代码,如未被调用的函数,未被使用的变量
minifyEnabled设置为true,设置在与shrinkResources一起的地方。
注意shrinkResources需要与minifyEnabled一起使用才会生效1
2
3
4
5
6release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
针对架构.so优化
在大型项目,特别时继承第三方过多时,此时.so文件才是占用最多的部分。
异常捕获
开发时怕的不是出现问题,而是问题无法重现。
因为android碎片化严重 生产上的问题肯定要比开发时问题多。而且很多都是在开发端未必能重现的。
此时需要我们记录发生在用户手机上的异常。
针对异常可以分类,java异常、native异常。
native异常即是native函数c++代码异常
java异常捕获
在andorid app中捕获java异常,只需要实现Thread.UncaughtExceptionHandler