安全模式:天猫 App 启动保护实践
(点击上方的蓝色文字,可快速关注我们)
在App热修复中有一个特殊情况,就是应用在启动阶段crash,根本启动不了,热修复就难以奏效,不过这种情况也能解决。前段时间微信读书分享了他们的启动保护方案,现在天猫也分享了他们的实践,叫做安全模式。本文介绍了天猫安全模式的由来、设计思路、原理和易用性考量等等。
你也可以看看天猫客户端之前分享的内容:
不要写死!天猫App的动态化配置中心实践
天猫App A/B测试实践
引言:天猫客户端用户众多,如何保证天猫App的稳定性是非常重要的任务,而启动阶段的保护是其中关键的一环。
天猫安全模式致力于解决APP启动阶段的crash等问题,同时具备自修复能力、同步热修复能力,是一整套启动保护的解决方案。
天猫安全模式的由来
问题:APP在使用过程中,有时会遇到线上无法修复的启动crash问题,用户无法使用APP
思考:
我们能否避免这样的问题发生?有没有办法让程序自动修复该问题?
我们怎么样能更好的修复同类问题?
结论:
我们需要一个可以保证APP顺利启动并解决重大问题的解决方案 - 安全模式
天猫安全模式设计
天猫安全模式重点放在了解决启动阶段问题上,从配置后台、客户端能力、数据、测试四个方面给出了统一的解决方案,同时也考虑到了不同APP的兼容性问题。
天猫安全模式的原理
APP crash的原因有很多,每个APP设计的方案也有不同,将其所有的异常错误都捕捉到很困难,因此我们换了个方式,完全从用户的角度来思考什么是异常退出,也就是打标记flag方式
如何判断异常退出:
APP启动时记录一个flag值
满足以下条件时,将flag值清空:
APP正常启动10秒
用户正常退出应用
用户主动从前台切换到后台
如果在启动阶段发生异常,则flag值不会清空,通过flag值就可以判断出客户端是否异常退出
每次异常退出,flag值都会+1
安全模式的分级执行策略:
安全模式中根据flag值的大小做了分级执行策略,目前分为两级安全模式,连续crash 2次为一级安全模式,连续crash 3次及以上为二级安全模式
业务线可以在一级安全模式中注册行为,比如某业务要清空缓存数据,这样在进入一级安全模式时,安全模式就会自动调用注册的行为,尝试修复客户端
如果一级安全模式无法修复APP,则会进入二级安全模式,二级安全模式会将APP恢复到初次安装状态,将Document、Library、Cache三个根目录清空
热修复执行策略:
老版本热修复策略:二级安全模式中触发。
问题:连续crash 3次后触发,在有问题的情况下,能打开这么多次APP的用户太少了,我们能不能更快的修复呢?
新版本修复策略:
将热修复从具体的级别中剥离,只要发现配置中需要热修复,APP就会同步阻塞进行热修复,保证修复的及时性
灰度方案:
安全模式制定了简单的灰度策略,灰度时,配置中会同时包含灰度、正式两份配置,也会包含灰度的概率
APP根据特定算法算出自己是否满足灰度条件,如果满足,则使用灰度配置,否则使用正式配置
天猫安全模式在易用性上的思考
最开始时,我们并没有特别考虑易用性问题,因为前两个版本都只有天猫一个接入方,不用考虑差异性问题;但在对接集团其他APP时,发现大家的需求点还是有较大不同的,同时也发现了安全模式存在的不足,因此我们加大了对易用性的考虑,主要体现在以下几点:
接入成本
站在接入方角度,完善文档,重新定义接口,力求接口简单、清晰,降低接入成本
统一配置后台
方便接入方配置信息,利用阿里云的CDN服务搭建统一的配置中心,可按照APP、版本来配置
定制性
考虑到不同APP的定位以及实际需求的不同,改造安全模式支持定制功能,让接入方来决定具体行为
欢迎关注“互联网架构师”,我们分享最有价值的互联网技术干货文章,助力您成为有思想的全栈架构师,只聊架构,不聊其他!打造最有价值的架构师圈子和社区。
长按下方的二维码可以快速关注我们
如想加群讨论学习,请点击右下角的“加群学习”菜单入群。
安全模式:天猫 App 启动保护实践相关推荐
- Android篇 | 爱奇艺App启动优化实践分享
导读 性能优化一直都是各个APP推进中的重点.难点,爱奇艺 App也不例外.在此之前,爱奇艺App Android 版的启动速度虽然一直处于同类App领先的水平,但优势距离其他同类的APP距离一直很小 ...
- 不要写死!天猫App的动态化配置中心实践
不要写死!天猫App的动态化配置中心实践 2016-03-15 高嘉峻 移动开发前线 版权声明 本文为天猫无线技术专家.苹果核博主高嘉峻的投稿,未经授权禁止转载 不要写死,一个永恒的话题.动态化,也是 ...
- 以高德为例,超级APP启动提速的实践和思考
前言 启动是门面,好的印象也助于留存率提高.苹果也在系统启动上不断努力,提升用户体验,最新的 M1 宣传中还特别强调了翻盖秒开 macOS,可以看出其对极致启动速度的追求.这篇文章(https://f ...
- iOS App 启动性能优化
为什么80%的码农都做不了架构师?>>> 本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq. ...
- 《App架构师实践指南》:移动开发的进阶指南
文章主要内容: 什么是 app 架构师 这本书主要内容 读完感受 什么是 App 架构师 成为"架构师"是许多程序员的梦想,当然也包括我,在工作的几年里,我见过很多架构师,他们在设 ...
- app启动页数秒加载 代码_iOS 底层探索 - 应用加载
一.前导知识 以下参考自 WWDC 2016 Optimizing App Startup Time : 1.1 Mach-O Mach-O is a bunch of file types for ...
- 天猫APP也可以点外卖了!饿了么接入天猫App
[TechWeb]4月2日,饿了么正式接入天猫APP首页,成为十大默认入口之一. 在天猫APP首页的第一排,蓝色圆圈图标的饿了么入口已经赫然在列. 目前,点击天猫首页"饿了么",会 ...
- 马蜂窝 iOS App 启动治理:回归用户体验
增长.活跃.留存是移动 App 的常见核心指标,直接反映一款 App 甚至一个互联网公司运行的健康程度和发展动能.启动流程的体验决定了用户的第一印象,在一定程度上影响了用户活跃度和留存率.因此,确保启 ...
- 掌阅Android App插件补丁实践(ZeusPlugin)
掌阅Android App插件补丁实践(ZeusPlugin) 遇到问题 65K方法数超限 随着应用不断迭代,业务线的扩展,应用越来越大,那么很不幸,总有一天,当你编译的时候,会遇到一个类似下面的错误 ...
- 优化总结:有哪些APP启动提速方法?
简介:APP 启动速度的重要性不言而喻.高德地图是一个有着上亿用户的超级 APP,本文从唤端技术.H5 启动页.下载速度.APP加载.线程调度和任务编排等方面,详解相关技术原理和实现方案,分享高德在启 ...
最新文章
- 2021年大数据Hadoop(八):HDFS的Shell命令行使用
- hadoop学习-倒排索引
- OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
- php mysql服务器配置_配置最新的PHP加MYSQL服务器
- PIC32单片机harmony开发环境 - SPI例程和代码分析
- Node.js Stream - 基础篇
- maven和docker_Java EE,Docker和Maven(技术提示#89)
- docker开放的端口_关于docker自动开放端口解决方案
- html5 canvas 不兼容safari浏览器_HTML5简介
- Jeecg Maven本地仓库下载地址
- 数据结构与算法-字典的时间复杂度
- paip.mysql 性能测试 报告 home right
- 地震数据的获取与处理
- Qt使用flowlayout,使控件两端间距始终固定,垂直和水平间距相等
- matlab在电磁场方向,基于matlab的电磁场仿真与分析探究.pdf
- 打2把王者荣耀的时间,学会JAVA自制验证码图片
- 基于微型计算机系统的实时时钟设计,基于单片机的DS12C887时钟芯片应用研究
- 虚拟场景+AR特效,世优科技助力京东手机华为新品发布会MR直播
- 安卓课程设计之记账本_基于Android个人用户记账本系统课程设计报告
- 【PLM—1】——2019-NAACL-Bert