Apk瘦身

作者: xyzkaye | 来源:发表于2023-03-19 14:19 被阅读0次
为什么要瘦身

• 安装包变大,导致很多用户不愿意安装更新
• 安装包变大,导致新用户不愿意下载
• 安装包变大,流量使用增多,增加其他边际成本


android组成内容.png
android存储格式.png
优化方式
图片资源的优化

图片选择的顺序

首先先选择VD
否则选择WebP
之后如果有透明通道等选择PNG
剩下的选则JPG

  • 使用矢量图片

矢量图片只需要放置一份
图片太长绘制时间长,制作复杂度高

  • 使用WebP

WebP体积更小,4.2.1+支持透明度

WebP转换方式

  1. Android Studio 选中图片-右键-convert to webp
  2. 下载WebP转换工具,进行图片统一压缩
  3. https://developers.google.com/speed/webp/docs/precompiled
  • 使用png

有透明度,渐变,阴影的情况下选择png

采用压缩工具对png进行

  1. 可以采用lmageOptim或者Pngyu对png进行压缩
  2. AAPT会使用内置的压缩算法来优化res/drawable/目录下的PNG图片,但也可能会导至本来已经优化过的图片体积变大,这里禁用aapt优化PNG图片。
aaptOptions{
  cruncherEnabled = false
}

JPG图片压缩

  • 采用压缩工具,packJPG或者guetzli压缩 JPG图片

其他图片优化
纯色图片用代码实现,如shape

减少图片资源放置份数
放置xhdpi,xxhpi,(或者只放一份可以吗,有什么问题?)

能用代码实现的图片尽量采用代码实现

  • 圆形图片,环形,渐变等都可以采用代码实现

#######资源压缩

开启资源压缩
开启代码混淆与去除无用资源

微信开源了AndResGuard工具,对资源进一步混淆


AndResGuard.png
其他优化
  • 冗余代码优化

冗余代码:
完全一致的代码或者只修改了空格和评论
结构上和句法上一致的代码,例如只是修改了变量名
插入和删除了部分代码
功能和逻辑上一致的代码,语义上的拷贝

用什么工具检测

  1. 使用工具,例如PMD
  2. PMD下载地址:https://pmd.github.io/

怎么检测?
• 下载后输入:/run.sh cpdgui
• pmd-d /usr/sc -R rulesets/java/quickstart.xml-f text
https://pmd.github.io/pmd-6.17.0/pmd_rules_java.html

  • Lint大法好

未使用资源

  1. 检测末使用资源并删除
  2. Android Studio - Analyze - Run inspection by Name -unused resource

无用代码优化及其他
Analyze -> Run Inspection by Name -> unused declaration -> Module app -> OK

  • 压缩存储文件

    1. 导入7zip,压缩资源预置资源
    2. 使用时解压到本地,比如assert中的资源
  • 语言资源优化
    在build配置中配置resConfigs指定需要的语言类型

defaultConfig {
    resConfigs "zh","en"
}
  • 其他
  1. Splits根据不同的ABI以及不同的屏幕密度分别打包
    https://developer.android.com/studio/build/configure-apk-splits.html

  2. 重复的string, color优化

    • 过滤重复的string
    • 定义唯一的color名
  3. 减少Enum使用

    • 每减少一个ENUM文件可以减少1K左右的大小
    • 采用常量定义
  4. 优化引用的库

    • 去除不在使用的库
    • 优化过时的库
    • 仅仅提取使用的代码
    • 选用更小的外部库
  5. 音视频资源

    • 采用音频压缩工具,压缩音频,降低音频采样率,通道数等在不明显影响效果的前提下压缩音频
  6. So动态下发

    • So可以采用动态下发的方式加载 (下载失败怎么办?)
    • 仅仅只需要加载对应abi下的so
  7. 指定abi

    • Gradle中指定abiFilter
ndk {
        abiFilters "armeabi - v7a","x86"
}

相关文章

  • 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/vjizkdtx.html