android瘦身法则

2020-05-09  本文已影响0人  ZSGZ_AD

首先第一步:我们先了解apk中各体积的比例占比:
AndroidStudio为开发者提供了很方便的工具来分析APK的体积。通过Build->Analyze APK->选择对应的APK,即可分析该APK的体积构成:

image.png
从上图来看res、assets、lib、dex文件等.
1.res assets文件大小
a)删除无用的资源 注:本人使用的stuido版本 3.6.3
在Android Studio中选择菜单“Analyze” --> “Run inspaction by Name ...”。在弹出的搜索窗口中输入想执行的检查类型,如“Unused Resources”。
在搜索界面,右键点击输入“Unused resources”;
image.png
等studio执行完毕后
image.png
选择“Remove All Unused Resources”即可
备注:
b)图片压缩
在App体积过大,且图片占用资源过多时,将png格式的图片转换为webp格式的图片可以缩减大量的包体积,但是在App体积不是很大时(建议以50M为界),可以不将png格式的图片转换为webp格式,因为webP的解码速度是比png格式的要慢的,尽管在现在硬件性能过剩的情况下,解码速度的差距基本可以忽略不计。
转换方法:
直接右键mipmap或drawable文件夹选择 convert to webp
image.png

参考:webp和png区别

c) 使用tinypng等图片压缩工具对图片进行压缩。
打开网址,将大图片导入到tinypng,替换之前的图片资源。

d) 尽量不要在项目中使用帧动画
一个帧动画几十张图片,再怎么压缩都还是占很大内存比重的。所以建议是让UI去搞,这里可以参考使用lottie-android,如果项目中动画效果多的话效果更加明显。当然这就要辛苦我们UI设计师大大了。

e)在app的build.gradle中添加

buildTypes {

        debug {

            versionNameSuffix "-debug"  //versionName的后缀

            minifyEnabled false

            shrinkResources false

        }

        release {

            minifyEnabled true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

            zipAlignEnabled true

            shrinkResources true  // 移除无用的resource文件

        }
}

这样打包出来的apk的大小会减小.项目中的无用资源还在.

  1. 减少chasses.dex大小
    classes.dex中包含了所有的java代码,当你打包时,gradle会将所有模板力的.class文件转换成classes.dex文件,当然,如果方法数超过64K,将要新增其他文件进行存储。可以通过multidexing分多个文件。换句话说,就是减少代码量。我们可以通过以下方法来实现:
    尽量减少第三方库的引用。如果你的dex文件太大,检查是否引入了重复功能的第三方库(图片加载库,glide,picasso,fresco,image_loader,如果不是你一个人单独开发完成的很容易出现这种情况),尽量做到一个功能点一个库解决。

  2. 其他
    a)删除无用的zip包
    b)删除翻译资源,只保留上架地区语言
    c)使用动态加载so文件,插件化开发
    d)大资源放到服务器请求
    e)android-support包尝试剔除项目

上一篇 下一篇

猜你喜欢

热点阅读