APK瘦身

作者: 吐必南波丸 | 来源:发表于2020-03-12 14:51 被阅读0次

apk瘦身的切入点

解压一个没有加固过的apk文件我们会看到下边的内容,相信你对这些文件或目录的含义都已经清楚,接下来我们将会从三个方面进行apk的瘦身操作:

  • Java代码,对应classes.dex文件,我们要剔除无效代码,减小dex文件大小。
  • 资源文件,对应res文件夹,assets目录。
  • 减小lib中引入的so大小。
一.减小Java代码的体积

1.开启minifyEnable
它的作用不仅仅是混淆代码,还有压缩优化的功能,他会遍历所有代码并找出没有引用到的代码,这些代码不会生成在apk中;另外混淆的效果是使用简短的字母替代原来的类名属性名等,一定程度上也可以减小代码体积。
2.定期review重构代码
对代码的不断优化是提升个人能力的有效手段,同时优化的结果也会间接的对apk进行精简
3.慎重选择你使用的开源库
很多开源库针对不同平台提供了精简版,目的就是移除在本平台上不需要的代码,例如fastJson,我们选择精简版就可以使开源代码缩小一倍左右,另外针对没有精简版的开源库,需要根据场景考虑是否使用源码依赖,手动移除不必要的文件资源。

二.资源文件瘦身

资源文件是apk中体积占用较大的一部分,尤其是图片资源,所以我们首要以图片的瘦身为主。首先要对图片编码格式有简单了解。Android平台支持的格式有:JPEG,PNG,GIF,BNP,WebP(4.0开始支持WebP),但是Android应用开发中,Bitmap所支持的只有三种JPEG,PNG,WebP,从Bitmap类的CompressFormat枚举可以看出。

JPEG:有损压缩,不支持透明通道和多帧动画(RGB)
PNG:无损压缩,支持透明通道(ARGB),PNG大小大于JPEG
WebP:支持有损和无损压缩,支持透明通道和多帧动画,4.0以上是开发首选,Google官方测试,WebP比PNG能减少45%大小,即便PNG经过压缩,也能相比PNG减小28%
WebP图片使用方法

  • PNG格式图片尽量使用NinePatch格式
    9图具有体积小,拉伸不变形的特点,并且Android studio可以一键转换,使用起来相当方便。
  • Lint查找无效资源
    Lint可以检查res目录下的无效资源(无法检查assets),然后将其删除,但是有一点要注意,如果资源文件是通过反射机制调用的,Lint是无法知道的,所以使用lint检查出的每一个资源都需要人工进行确认,防止发生异常删除。
  • 开启shrinkResources功能
    shrinkResources标识是否去除无用的resource文件,它需要配合minifyEnable使用,同样存在反射机制引用的问题,这种情况会被误删
android {
          buildTypes {
                  release {
                                minifyEnable true
                               shrinkResources true
                            }
                 }
       }
  • resConfigs剔除第三方库或者SDK中的资源
    第三方库中包含的无效资源通常包含以下两点:

dpi目录,第三方库通常会提供所有的dpi目录以及对应的资源文件,因为它是针对大众使用的,而我们未必都需要,这时候需要选择性的移除。
很多第三方sdk是做了国际化,而我们可能用不到,此时也需要删除国际化资源。

defaultConfig {
resConfigs "zh" //表示只使用中文
resConfigs "xxhdpi" // 表示只是用xxhdpi目录下的资源文件
}
三.libs目录瘦身

so文件最终会被打包到libs目录中,我们针对libs目录的瘦身主要是去除不必要的平台ABI的so文件,
如果只上传到国内市场发布话,只保留'armeabi-v7a'就可以
如果还上传到google play 海外市场, 则需要增加 'arm64-v8a' 就可以
如果想要在虚拟机上运行项目则加上“x86”

ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }

相关文章

  • APK瘦身 减小APP体积

    APK dex瘦身 APK res瘦身 APK减小语言包 APK 重新打包 PNG转JPG tiny处理png w...

  • Drawable 着色的后向兼容方案

    Drawable 着色的后向兼容方案(APK瘦身实践APK瘦身实践)[http://www.cnblogs.com...

  • Android性能优化

    Apk瘦身实用总结 Apk瘦身 Apk的大小对于用户是否选择下载应用起着至关重要的影响下面是对于减小Apk大小的一...

  • Android性能优化:实战讲解包体积优化(上)

    一、瘦身优化及 Apk 分析方案介绍 1、瘦身优势 我们首先来介绍下,为什么我们需要做 APK 的瘦身优化? AP...

  • app性能优化

    Android冷启动时间优化 Android开发——避免内存泄露 APK瘦身实践 APK瘦身记,如何实现高达53%...

  • apk瘦身

    Android性能优化之APK瘦身详解(瘦身73%) - 简书

  • android apk瘦身

    apk瘦身会带来哪些好处,本文就不赘述了,会依照下面的目录来对apk瘦身进行总结 目录 apk都有啥? 从资源下手...

  • Android apk瘦身实践

    写在前面 最近刚做了一波apk瘦身优化,瘦身后apk大小降低了19%左右。打铁要趁热,赶紧记录一下先。 APK A...

  • ipa和apk简易瘦身

    Material Design风格apk 瘦身ipa 瘦身 一、起因 新版本发布后发现安装包apk和ipa各增加了...

  • 【转】APK瘦身实践

    本文转自:Apk瘦身实践作者:杰风居 转载序:Android开发中,apk瘦身还是很有必要,尤其现在的APP动辄十...

网友评论

      本文标题:APK瘦身

      本文链接:https://www.haomeiwen.com/subject/pdgujhtx.html