App优化策略(一)

1、背景

又是一个灾难一年,2020发生了很多事,也一直没有在猿类的世界,仗剑漂流,留下痕迹,2021,为了生活还是要努力的活着。

2、App大小优化

在这个互联网时代, 一个app的下载量,最直观的因素是app的大小,虽然不是绝对因素,但是也有一定的影响;
  1. 文件大,所占设备内存空间也相应大;
  2. 文件大,下载/升级消耗资源;

针对上面的问题,这里要说的是解决这些痛点;

1. 缩减Apk本身大小
  • 图片内存缩减策略

png类型图片:是一个无损压缩高质量的图片
压缩工具:Tinypng - 有大小和数量限制超过需要付费。

.9.png类型图片:使用有限制,在Android碎片化严重的情况下,可自适应调节,长,宽,内容区域的大小。

jpg类型图片:占用内存较小,适用于无透明度的图片。

webp类型图片:谷歌推荐。支持无损和有损压缩,支持透明度,适用于API17以上,开发工具,自带转换工具,可调节转换率。

矢量图:适用于导航Icon 图标,控制着色器,更换Icon颜色,可减少文件个数,减少APK大小。

源码api方面:针对shap 等定义的Android提供的有api支持,满足一些特殊场景,对apk大小压缩也有帮助。

GradientDrawable 简单的使用可以代替shap

 GradientDrawable shapDrawable = new GradientDrawable();
 shapDrawable.setShape(GradientDrawable.OVAL);
 shapDrawable.setCornerRadius(5f);
 shapDrawable.setColor(Color.argb(00, 255, 0, 255));
 shapDrawable.setStroke(5, Color.argb(255, 0, 0, 255));
 shapDrawable.setSize(80, 80);
  • gradle 配置缩减

minifyEnabled :资源缩减(代码混淆),主要是删除无用代码

shrinkResources: 资源优化,在编译期间针对layout布局文件/图片文件,置空内容,保留文件,对于反射所需加载的文件,需要特殊配置。
在res->raw目录下创建keep.xnl文件进行过滤如下

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/activity_four"
tools:discard="@layout/unused2" />

说明:
tools:discard :舍弃资源
tools:keep : 保留资源
shrinkResources开启必须要开启 minifyEnabled

  • gradle 配置加载

配置ndk项,按需配置,现在主流设备都是arm的cpu架构,因此,NDK支持’armeabi-v7a’,就可以支持80%设备的运行,x86架构,大多数搭载在平板上,所以,根据业务需求进行选择。

	ndk {
        abiFilters 'armeabi', 'x86', 'armeabi-v7a'
     }
配置多语言保留模块
 resConfigs "zh","en"
  • gradle 分包缩减APK大小
    根据业务需求选择编译对应的Apk
    flavorDimensions "default"
    productFlavors {
        arm32 {
            dimension "default"
            ndk {
                abiFilters 'armeabi-v7a'
            }
        }
        x86 {
            dimension "default"
            ndk {
                abiFilters 'x86'
            }
        }
    }
2. 更新优化

apk在迭代更新的过程,渐渐地会使apk越来越大,因为apk太大,导致更新频率降低,apk很多新增功能,无法跟上同行步伐,用户无法体验,因此,会导致客户的流逝。
当前只提供技术选型方案,不提供具体实现:

  • 增量更新
    实现原理就是通过新旧文件包,进行对比,生成一个差分包,以打补丁的方式,升级软件。
  • 热修复
    适用于紧急修复线上软件包,避免重复发包
    阿里 - AndFix
    微信- Tinker 目前start 达到15.7k,位居榜首。
    美团- Robust
  • 插件化
    实现原理就是将app拆分多个模块,而且每个模块可以独立运行,可根据用户的适用范围,下载更新对应模块。

. …未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值