敞开生长之旅!这是我参加「日新方案 2 月更文应战」的第 29 天,点击查看活动详情

前语

在日常开发中,跟着APP功能迭代发现打出的安装包体积越来越大,这儿说的大是陡增的那种大,而并非一点一点增大。从最开端的几兆到后边的几十兆,尽管市面上的许多APP乃至达到上百兆,但毕竟别人功能强大,用到的一些底层库就特别占面积,流量也多所以也可理解。但自研的一些APP可经不住这些考验,所以能紧缩就紧缩,能优化就尽量优化,以得到用户最好的体会,下面就来说说我在项目中是怎样优化APP体积的。

1. 本地资源优化

这儿主要是紧缩一些图片和视频。项目中本地资源用到最多的应该就是图片,简直每个页面都离不开图标,乃至一些页面采用大图片的形式。你可知道,正常不经紧缩的图片大的能够上大几十兆,小则也是一兆起步。这儿做了个试验,同一个文件分别采用svg、png、运用tiny紧缩后的png、webp四种类型图片进行展示(次序是从左到右,从上到下):

Android:我是如何优化APP体积的

能够看到,加载出来的作用简直没有什么区别,但体积却有很大的差别(其间webp是采取的默许75%转化):

Android:我是如何优化APP体积的

所以,别再运用png格式图片,太浪费资源了,就算经过紧缩仍是不及svg和webp,这儿的webp其实还能够加大转化力度,但个人仍是比较喜爱svg。

至于音视频文件也是能够经过其他东西进行紧缩再放入本地,如非必要,尽量仍是运用网络资源。

2. lib优化

一些三方库会运用底层so文件,一般在装备的时候我们尽量挑选一种cpu类型,这儿挑选armeabi-v7a,其实简直都兼容

ndk {
     //设置支撑的SO库架构 armeabi、armeabi-v7a、arm64-v8a、x86、x86_64、mips、mips64
     abiFilters 'armeabi-v7a'
}

能够看看APK体积分析,每种cpu占用体积都比较大,少装备一种就能省下不少空间。

Android:我是如何优化APP体积的

3. 代码混杂、无用资源的删去

在bulid.gradle中装备minifyEnabled true敞开代码混杂,还需要装备混杂规矩,否则无法找到方针类。shrinkResources true则是打包时不会将无用资源打入包内,这儿有个小坑。之前运用腾讯地图时,某些第三方的静态资源会由于这个操作不被打入包内,导致无法找到资源,所以根据具体情况运用。

 release {
            buildConfigField "boolean", "LOG_DEBUG", "false"
            minifyEnabled true
//          shrinkResources true 慎用,可能会导致第三方资源文件找不到
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

4. 代码复用,剔除无用代码

项目中由于多人协同开发会呈现各写各的情况,需要抽出一些公共库之类的东西,方便代码复用。一些注释掉的代码该删去就删去。其实这一部分优化的体积相当少,但也得做,也是对代码质量的一种提高。

总结

其实只需做到了以上四步,APP体积优化已经得到了很大程度的提高了,其他再怎样优化作用也不是很明显了,最主要的就是本地资源和第三方so包体积占用较多。图片的运用我们尽量做到:小图标用svg,全屏类的大图能够考虑webp,最好不要运用png。ndk装备最好只装备一款cpu,简直都可兼容,万不得已再加一个。

以上就是全部内容,期望对大家有所协助。

敞开生长之旅!这是我参加「日新方案 2 月更文应战」的第 29 天,点击查看活动详情