当前位置: 首页 > 科技观察

Android性能优化系列:APK极致优化

时间:2023-03-14 15:30:54 科技观察

本文主要针对Android性能优化中的AndroidAPK大小优化。虽然现在网速很快,用户流量也很大,但是优化我们的安卓apk文件还是很有必要的。几十上百兆的大小动辄几十兆,用户体验还是很差的。下面我们来梳理一下。下面来看看Androidapk的优化方法。我们的app中会有很多icon使用svg做iconicons,而美工们一般都是成套的给,所以我们可能需要在res文件中放多套icon,这会让我们的apk文件体积变得很大大,所以优化的第一步从图标处理开始。ion尝试使用svg文件而不是png文件。首先,svg文件以xml文件的形式存在,占用空间小,可以根据设备屏幕自动缩放不失真。Andoid本身不支持直接导入svg文件,所以我们需要对svg文件进行转换。如下:使用如下:="wrap_content"/>或iconstatedistinctioning使用TintshaderTintshader可以改变图片的颜色,使用Tint来显示不同颜色的图片,在原本需要多张不同颜色的相同图片时可以减小apk的大小。UI效果如下:注意,这是同一张图片的不同效果。使用方法如下:添加一行代码"android:layout_width="wrap_content"android:layout_height="wrap_content"android:tint="@color/colorAccent"/>当需要多组不同大小的图标时,使用svgAndroidstudio自带的函数配置需要的图标大小,自己打包会自动生成对应大小的png图片。使用方法如下:在app的build.graldle中的defaultConfig标签下:defaultConfig{applicationId"com.example.apk"minSdkVersion19targetSdkVersion28versionCode1versionName"1.0"testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"//minSdkVersion19(5.0)itvectoriesDrawablesgeneriesDrawablesgeneries(','xxhdpi','xxxhdpi')//minSdkVersion>19//vectorDrawables.useSupportLibrary=true}此时drawable文件如下:打包后如下:以后只有一套APP中需要图片,解决多组图片导致apk体积变大的问题。app中大图压缩,使用webp格式图片WebP格式,谷歌开发的一种图片格式,可以加快图片加载速度。图片压缩后大小仅为JPEG的2/3左右,可节省大量服务器宽带资源和数据空间。使用方法如下:转换前后对比,去除无用资源一键去除(不推荐)一键去除无用资源,如果动态id加载资源有问题,而且是物理删除,一次删除了,就找不到了,所以尽量不要用。如果一定要使用,请提前备份好res文件。使用方法如下:使用shrinkResources去除,使用shrinkResourceswith//Zipalign优化必须先启用代码混淆minifyEnabled使用方法如下:buildTypes{release{//启用代码混淆minifyEnabledtrue//Zipalign优化zipAlignEnabledtrue//去除无用资源文件shrinkResourcestrueproguardFilesgetDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'}}打包后效果如下:虽然图片还在,但是400k多的大小变成了2B。资源打包设置由于第三方库的引入,比如appcompat-v7的导入库中包含了大量国际化的资源,可以根据自己的业务进行保留和删除。原包如下:原包里面有各个国家的语言,所以我们一般只需要保留中文即可,配置如下:defaultConfig{applicationId"com.zthx.xianglian"minSdkVersion19targetSdkVersion28versionCode1versionName"1.0.0"testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"//只保留指定资源和默认资源resConfigs('zh-rCN','ko')}配置后如下:动态库打包配置如果项目包含第三方SDK或者直接使用NDK,如果没有配置它会自动将完整CPU架构的动态库打包到apk中,而真机只需要保留一个armeabi或者armeabi-v7a,这样你可以配置它。//配置so库架构(真机:arm,模拟器x86)ndk{abiFilters"armeabi","armeabi-v7a"}启用代码混淆压缩buildTypes{release{//源代码混淆启用minifyEnabledtrueproguardFilesgetDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'}}关于代码混淆配置这里就不多说了。如果你不知道,你可以去网上了解一下。至此,apk极速优化的八步就结束了。如果你的apk还没有优化过,那么经过这八个步骤,目测你的apk体积至少会减少一半。赶快试试这个神奇的优化吧。