App瘦身

官方 App Thinning

App Thinning 有三种方式

        包括:App Slicing、Bitcode、On-Demand Resources。

  • App Slicing,会在你向 iTunes Connect 上传 App 后,对 App 做切割,创建不同的变体,这样就可以适用到不同的设备。
  • On-Demand Resources,主要是为游戏多关卡场景服务的。它会根据用户的关卡进度下载随后几个关卡的资源,并且已经过关的资源也会被删掉,这样就可以减少初装 App 的包大小。
  • Bitcode ,是针对特定设备进行包大小优化,优化不明显。

        同时,按照 Asset Catalog 的模板添加图片资源

        总结下来就是,App Thinning是官方提供的支持,要多了解官方文档获取最新的瘦身方案。

无用图片资源删除

        自己写工具步骤

  • 通过 find 命令获取 App 安装包中的所有资源文件,比如 find /Users/daiming/Project/ -name。
  • 设置用到的资源的类型,比如 jpg、gif、png、webp。
  • 使用正则匹配在源码中找出使用到的资源名,比如 pattern = @"@"(.+?)""。
  • 使用 find 命令找到的所有资源文件,再去掉代码中使用到的资源文件,剩下的就是无用资源了。
  • 对于按照规则设置的资源名,我们需要在匹配使用资源的正则表达式里添加相应的规则,比如 @“image_%d”。 

        也可以选择开源的工具直接使用,如 LSUnusedResources,特别是对于使用编号规则的图片来说,可以通过直接添加规则来处理。

图片资源压缩

        对于 App 来说,图片资源总会在安装包里占个大头儿。对它们最好的处理,就是在不损失图片质量的前提下尽可能地作压缩。目前比较好的压缩方案是,将图片转成 WebP。

        WebP 是 Google 公司的一个开源项目。首先,我们一起看看选择 WebP 的理由:

  • WebP 压缩率高,而且肉眼看不出差异,同时支持有损和无损两种压缩模式。比如,将 Gif 图转为 Animated WebP ,有损压缩模式下可减少 64% 大小,无损压缩模式下可减少 19% 大小。
  • WebP 支持 Alpha 透明和 24-bit 颜色数,不会像 PNG8 那样因为色彩不够而出现毛边。

使用命令行方式

        Google 公司在开源 WebP 的同时,还提供了一个图片压缩工具 cwebp来将其他图片转成 WebP。cwebp 使用起来也很简单,只要根据图片情况设置好参数就行。


cwebp [options] input_file -o output_file.webp

// 选择无损压缩模式的话,可以使用如下所示的命令
cwebp -lossless original.png -o new.webp

        图片色值在不同情况下,可以选择用 -q 参数来进行设置,在不损失图片质量情况下进行最大化压缩:

  • 小于 256 色适合无损压缩,压缩率高,参数使用 -lossless -q 100;
  • 大于 256 色使用 75% 有损压缩,参数使用 -q 75;
  • 远大于 256 色使用 75% 以下压缩率,参数 -q 50 -m 6。

        

使用工具

        除了 cwebp 工具外,你还可以选择由腾讯公司开发的iSparta。iSpart 是一个 GUI 工具,操作方便快捷,可以实现 PNG 格式转 WebP,同时提供批量处理和记录操作配置的功能。如果是其他格式的图片要转成 WebP 格式的话,需要先将其转成 PNG 格式,再转成 WebP 格式。

        不过,WebP 在 CPU 消耗和解码时间上会比 PNG 高两倍。所以,我们有时候还需要在性能和体积上做取舍。建议如果图片大小超过了 100KB,你可以考虑使用 WebP;而小于 100KB 时,你可以使用网页工具 TinyPng或者 GUI 工具ImageOptim进行图片压缩。这两个工具的压缩率没有 WebP 那么高,不会改变图片压缩方式,所以解析时对性能损耗也不会增加。

代码瘦身

        App 的安装包主要是由资源和可执行文件组成的,所以我们在掌握了对图片资源的处理方式后,需要再一起来看看对可执行文件的瘦身方法。

        可执行文件就是 Mach-O 文件,其大小是由代码量决定的。通常情况下,对可执行文件进行瘦身,就是找到并删除无用代码的过程。而查找无用代码时,我们可以按照找无用图片的思路,即:

  • 首先,找出方法和类的全集;
  • 然后,找到使用过的方法和类;
  • 接下来,取二者的差集得到无用代码;
  • 最后,由人工确认无用代码可删除后,进行删除即可。

发散思考

        除了上面提到的,还有个给app瘦身的方法是动态库,但是动态库又会消耗启动时间,所以实际情况下需要去平衡选择。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Kotlin中进行App瘦身可以采取以下几种方法: 1. 使用ProGuard进行代码混淆和优化。ProGuard是一个Java字节码优化器,可以删除未使用的代码和资源,减小应用的体积。在Kotlin项目中,可以通过在build.gradle文件中配置ProGuard规则来启用它。例如: ```kotlin android { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } } ``` 2. 使用R8进行代码压缩。R8是Google推出的一种代码压缩工具,可以在编译时删除未使用的代码和资源,减小应用的体积。在Kotlin项目中,默认情况下,R8已经启用,无需额外配置。 3. 优化资源文件。可以通过使用WebP格式替换PNG格式的图片,使用Vector Drawable替换多个分辨率的位图,以及压缩和优化其他资源文件来减小应用的体积。 4. 使用动态特性模块化。将应用的功能模块化,只在需要的时候下载和安装相应的模块,可以减小应用的初始安装包体积。 5. 使用APK分包。将应用的代码和资源分成多个APK文件,按需下载和安装,可以减小应用的初始安装包体积。 6. 使用资源压缩工具。可以使用工具如AndResGuard对资源文件进行压缩和优化,减小应用的体积。 7. 使用动态加载技术。将一部分代码和资源放在服务器上,通过动态加载的方式在运行时下载和加载,可以减小应用的初始安装包体积。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值