ios有英雄联盟打完游戏闪退一把就闪退的吗

登录以解锁更多InfoQ新功能
获取更新并接收通知
给您喜爱的内容点赞
关注您喜爱的编辑与同行
966,690 二月 独立访问用户
语言 & 开发
架构 & 设计
文化 & 方法
您目前处于:
iOS启动连续闪退保护方案
iOS启动连续闪退保护方案
0&他的粉丝
日. 估计阅读时间:
,人工智能、区块链、大数据、架构等领域海内外先驱实践!
亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的。
为了尝试解决这个问题,微信读书开发了 iOS 连续闪退保护工具:,检测连续闪退,在连续闪退出现时,尝试自修复 App:
本文探讨了连续闪退问题的产生原因、检测、修复机制,以及如何在你的项目中引入、测试和使用。
连续闪退检测
相关厂商内容
相关赞助商
首先要检测用户 App 出现了连续闪退的情况,有两种检测方法,捕获异常和计时器。
1. 捕获异常
检测连续闪退,可以通过捕获异常来实现,异常有以下种类:
Mach 异常:EXC_CRASH
UNIX 信号:SIGABRT
NSException 异常:应用层,通过 NSUncaughtExceptionHandler 捕获
在念茜的一文中详细介绍了 Mach 异常和 Unix 信号捕获 crash 的机制。简单来说,异常一般产生自 iOS 的微内核 Mach,然后在 BSD 层转换成 UNIX SIGABRT 信号,以标准 POSIX 信号的形式提供给用户。NSException 是使用者在处理 App 逻辑时,用编程的方法抛出。
如何捕获异常
通过以下方法捕获异常:
利用 Mach API 捕获 Mach 异常
通过 POSIX API 注册 signal(SIGSEGV,signalHandler) 来捕获 UNIX 异常信号
注册 NSUncaughtExceptionHandler 来捕获应用级异常
Crash 上报工具如 PLCrashReporter 通过注册 Mach 异常 + UNIX信号 的 handler 达到检测的目的,对用户提供了处理异常的接口。
可以利用 PLCrashReporter 这类工具来检测连续闪退:
首先维护一个计数变量,表示连续闪退次数
在 PLCrashReporter 的 crash handler 中加入逻辑:如果启动 5s 内 crash 使计数器加一
每次启动时,如果连续闪退计数 & n,则检测到了连续闪退
启动后,执行一个定时任务,在 5s 后重置计数(如果 App 连续闪退则不会重置)
通过 Mach 异常、Unix 信号、NSException 异常来检测闪退,能获得更多的 crash 上下文,但由于 crash 收集框架多使用这些方法,可能会有这样的风险:与第三方 crash 收集框架冲突导致漏检测。另外,可能会与 App 已有的异常处理代码产生耦合。
2. 计时器方法
除了通过捕获异常的方式检测连续闪退,还可以通过计数器方法来检测:
维护一个计数变量,用于表示连续闪退的次数
在启动 application:didFinishLaunchingWithOptions: 后使计数加一
接着使用 dispatch_after 方法在 5s 后清零计数,如果 App 活不过 5 秒计数就不会被清零
如果发现计数变量 & n,表明 App 连续 n 次连续闪退,启动保护流程,重置计数。
当保护流程完成后,进入 App 正常启动流程
而计数器方法逻辑简单,与原有的代码耦合小。虽然有误报可能(在启动后立即被 kill 掉,误认为 crash),但是可以通过设置阈值来减小误报的误报率。
综上权衡,我们使用计时器方法检测连续闪退。
连续闪退修复
检测到连续闪退后,接下来要尝试对闪退进行修复,这里先分析可能的闪退原因,再结合微信读书的例子说明修复流程。
连续闪退,可能是 App 启动关键路径中执行了必 crash 的代码,原因可能有:
数据库损坏:在日常使用如异常退出、断电,或者错误的操作(参考:)。
文件损坏:处理文件时如果没有 @try...catch,损坏文件会抛出 NSException 导致 crash
网络返回数据处理异常:比如预期返回数组,但实际返回了字典,对字典对象执行 -objectAtIndex 方法会产生 crash: unknow selector send to object;,或返回破损的 Tar 包,在解压失败导致 crash。
代码 bug:当必 crash 的代码出现在启动关键路径中,就会导致连续闪退。
针对 1,可以通过工具修复数据库,或者删除 DB。针对2,可以删除文件来进行修复。对于 3 和 4,我们需要具体地分析 crash 案例,通过 JSPatch 来进行修复。
微信读书的修复流程
为了应对上述导致连续闪退的原因,微信读书的修复流程为:
进入 didFinishLaunch 时检查是否有连续闪退,无则执行 5
弹 Toast 提示用户是否修复,轻触『修复』执行2,否则执行 5
尝试下载并执行 JSPatch 补丁
这里是为了解决上述第4点 - 代码 bug 导致的闪退,使用 JSPatch 可以进行热修复。在 didFinishLaunching 时,会卡住界面发请求检查是否有可用的 JSPatch 脚本,如果有则加载执行,解决代码 bug 导致的闪退。
尝试删除 Documents / Library / Caches 目录下的所有文件
这里直接删除了所有用户数据,适用于微信读书这种所有数据都在云端,删除后可以完全从云端恢复。如果你的 App 不属于这种场景,那么应该在 repairBlock 中自定义修复逻辑,比如:
a. 不删除文件,只修复数据库b. 修复前把用户数据备份到云端c. 收集 crash 样本,查明原因,定制 JSPatch 修复补丁并下发
退出微信读书登录状态
进入原 didFinishLaunch
连续闪退检测 + 保护流程如图所示:
检测和连续 crash 并修复需要修改原 -application:didFinishLaunchingWithOptions: 逻辑,有几种方法:
直接修改 -application:didFinishLaunchingWithOptions: 方法。
新建一个 SubAppDelegate 类来继承 AppDelegate,覆盖 -application:didFinishLaunchingWithOptions: 方法,然后把 main() 函数中的 AppDelegate 替换为 SubAppDelegate
新建一个 AppDelegate 扩展,然后用 method swizzle 的方法替换 -application:didFinishLaunchingWithOptions: 方法。
上述三种方案,对现有项目改动代价是 1 & 2 & 3。因此,我们使用对源码修改代价最小的方案 3 来替换 -application:didFinishLaunchingWithOptions:。
检测的逻辑 GYBootingProtection 已经处理好,修复的处理预留了接口,可以由用户自定义,把自定义的修复流程传入 repairBlock 即可。
源码 ,将 src 目录下所有文件拖拽到你的 Xcode 项目
在 AppDelegate+GYBootingProtection.m 的 onBeforeBootingProtection 方法中添加检测前需要执行的代码,比如设置crash上报:- (void)onBeforeBootingProtection {
[GYBootingProtection setLogger:^(NSString *msg) {
// setup logger
NSLog(@"%@", msg);
[GYBootingProtection setReportBlock:^(NSInteger crashCounts) {
// setup crash report
在 onBootingProtection 方法中添加修复逻辑,比如删除文件:- (void)onBootingProtection {
// 检查 JSPatch 更新
// 删除 Documents Library Caches 目录下所有文件
[GYBootingProtection deleteAllFilesUnderDocumentsLibraryCaches];
如需执行异步的修复逻辑,在 onBootingProtectionWithCompletion: 方法添加修复逻辑,并在完成修复后调用 completion :- (void)onBootingProtectionWithCompletion:(BoolCompletionBlock)completion {
[self onBootingProtection];
// 异步修复
[self asyncRepairWithCompletion:^(void) {
// 正常启动流程
if (completion) completion();
首先制造连续闪退场景:
启动后 5 秒内,双击 Home 通过上划手势 kill 掉 App,重复多次。(也可以在代码里人为制造crash)
当连续闪退超过 5 次时,会提示用户修复:
用户轻触修复,App 重置初始状态,连续闪退问题解决:
查看原文:
感谢对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至。也欢迎大家通过新浪微博(,),微信(微信号:)关注我们。
Author Contacted
语言 & 开发
295 他的粉丝
架构 & 设计
702 他的粉丝
109 他的粉丝
0 他的粉丝
告诉我们您的想法
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p
当有人回复此评论时请E-mail通知我
赞助商链接
InfoQ每周精要
订阅InfoQ每周精要,加入拥有25万多名资深开发者的庞大技术社区。
架构 & 设计
文化 & 方法
InfoQ.com及所有内容,版权所有 ©
C4Media Inc. InfoQ.com 服务器由 提供, 我们最信赖的ISP伙伴。
极客邦控股(北京)有限公司
找回密码....
InfoQ账号使用的E-mail
关注你最喜爱的话题和作者
快速浏览网站内你所感兴趣话题的精选内容。
内容自由定制
选择想要阅读的主题和喜爱的作者定制自己的新闻源。
设置通知机制以获取内容更新对您而言是否重要
注意:如果要修改您的邮箱,我们将会发送确认邮件到您原来的邮箱。
使用现有的公司名称
修改公司名称为:
公司性质:
使用现有的公司性质
修改公司性质为:
使用现有的公司规模
修改公司规模为:
使用现在的国家
使用现在的省份
Subscribe to our newsletter?
Subscribe to our industry email notices?
我们发现您在使用ad blocker。
我们理解您使用ad blocker的初衷,但为了保证InfoQ能够继续以免费方式为您服务,我们需要您的支持。InfoQ绝不会在未经您许可的情况下将您的数据提供给第三方。我们仅将其用于向读者发送相关广告内容。请您将InfoQ添加至白名单,感谢您的理解与支持。后使用快捷导航没有帐号?
查看: 1947|回复: 17
新人欢迎积分1 阅读权限40积分559精华0UID帖子金钱801 威望0
Lv.4, 积分 559, 距离下一级还需 441 积分
UID帖子威望0 多玩草0 草
这次不一定管咱们5.1.1了, 好像更新里边没有说5.1.1的闪退!
一加载完游戏立刻闪退!
----------------------
今天更新完依然闪退
垃圾sc!!!!!!!!!
本帖最后由 甘cccc 于
20:16 编辑
新人欢迎积分1 阅读权限40积分887精华1UID3143752帖子金钱2571 威望0
Lv.4, 积分 887, 距离下一级还需 113 积分
UID3143752帖子威望0 多玩草34 草
我在部落战界面捐兵闪退!!!
新人欢迎积分0 阅读权限50积分1318精华0UID帖子金钱1850 威望0
Lv.5, 积分 1318, 距离下一级还需 1182 积分
UID帖子威望0 多玩草0 草
你的系统可真古董
新人欢迎积分1 阅读权限60积分3780精华0UID帖子金钱4852 威望0
Lv.6, 积分 3780, 距离下一级还需 1220 积分
UID帖子威望0 多玩草85 草
程序员去哪里找ios5.1.1的机器来测试?
就算有人反馈了5.1.1闪退。
现在估计7都绝迹了,8也不多了。
新人欢迎积分0 阅读权限50积分2101精华0UID帖子金钱2147 威望0
Lv.5, 积分 2101, 距离下一级还需 399 积分
UID帖子威望0 多玩草50 草
化石你好。。。。
新人欢迎积分1 阅读权限40积分657精华0UID帖子金钱1232 威望0
Lv.4, 积分 657, 距离下一级还需 343 积分
UID帖子威望0 多玩草0 草
早就不支持511了吧
Avenger_NewEra重组招收活跃成员,部落战20连胜中
新人欢迎积分1 阅读权限50积分1404精华0UID帖子金钱11258 威望0
Lv.5, 积分 1404, 距离下一级还需 1096 积分
UID帖子威望0 多玩草30 草
是啊,5.1.1早就不支持了,6都不支持了吧
新人欢迎积分1 阅读权限40积分559精华0UID帖子金钱801 威望0
Lv.4, 积分 559, 距离下一级还需 441 积分
UID帖子威望0 多玩草0 草
风之影神 发表于
是啊,5.1.1早就不支持了,6都不支持了吧
支持, 最低实5.1.1
一直好好的
就是新版友问题
新人欢迎积分0 阅读权限10积分13精华0UID帖子金钱27 威望0
Lv.1, 积分 13, 距离下一级还需 2 积分
UID帖子威望0 多玩草0 草
我用的也是5.1.1 没什么问题
新人欢迎积分1 阅读权限40积分430精华0UID帖子金钱1684 威望0
Lv.4, 积分 430, 距离下一级还需 570 积分
UID帖子威望0 多玩草0 草
5.1.1是目前最低支持的版本&&闪退可以尝试删除再安装&&依然闪退你就只可以等待更新了...要么你更新系统也可以
新人欢迎积分0 阅读权限1积分1精华0UID帖子金钱6 威望0
Lv.0, 积分 1, 距离下一级还需 4 积分
UID帖子威望0 多玩草0 草
我也5.1.1之前一直好好的,这次更新之后闪退,删除安装之类的都不行。
新人欢迎积分0 阅读权限40积分600精华0UID帖子金钱707 威望0
Lv.4, 积分 600, 距离下一级还需 400 积分
UID帖子威望0 多玩草0 草
甘cccc 发表于
这次不一定管咱们5.1.1了, 好像更新里边没有说5.1.1的闪退!
一加载完游戏立刻闪退! ...
升级吧 7以上就行
新人欢迎积分1 阅读权限30积分194精华0UID帖子金钱588 威望0
Lv.3, 积分 194, 距离下一级还需 56 积分
UID帖子威望0 多玩草0 草
去91手机助手上装一个,官方下的APP点不开的
新人欢迎积分1 阅读权限60积分2987精华0UID帖子金钱3551 威望0
Lv.6, 积分 2987, 距离下一级还需 2013 积分
UID帖子威望0 多玩草50 草
你已经被时代遗弃了
新人欢迎积分1 阅读权限40积分559精华0UID帖子金钱801 威望0
Lv.4, 积分 559, 距离下一级还需 441 积分
UID帖子威望0 多玩草0 草
不忘初心1942 发表于
我也5.1.1之前一直好好的,这次更新之后闪退,删除安装之类的都不行。
你的好了么?
猴年新春勋章
猴年大吉,猴年行大运!
马年新春勋章
手机APP马年迎春,马上有钱!
需要金钱:1100
手机盒子客户端点击或扫描下载
Powered by&>&&>&&>&&>&正文
  部分用户iOS9.0.2越狱后发现有些应用程序打开会出现闪退的问题,那么出现这个问题该怎么解决呢?小编下面就给大家带来iOS9越狱后打开应用闪退解决办法。
  自iOS9.0.2越狱并且安装一系列插件后,有部分网友发现有些程序闪退,于是开始繁琐和漫长的安装/卸载各个插件过程,以排除法倒查原因。据网友@sdtvttv表示,他用iCleaner Pro终于发现了罪魁祸首――FaceTimeAudioEnabler补丁,不管是安装插件还是替换文件打了这个补丁,一定会有闪退!
  由于@sdtvttv是用替换文件的方法打的FaceTimeAudioEnabler补丁,所以只能用iCleaner Pro关闭补丁!
iOS9越狱后打开应用闪退解决办法:
  打开iCleaner Pro,最下面一排,点“+”,点击Cydia Substrate插件,把FaceTimeAudioEnabler右侧的开关关闭,注销后闪退程序就可以打开了。
  注意:这是iOS9越狱后程序闪退的一种解决办法,不代表所有闪退情况都能用该方法解决,如果是打了FaceTimeAudioEnabler补丁导致的闪退,是插件就卸载,是用文件替换法的就用上述的方法应该可以解决。
提示:支持键盘“← →”键翻页ios11 米家 app 更新后一直闪退有木有?
· 143 天前 · 822 次点击
快捷方式不能用
打开 app 闪退
删除重装登陆后一样闪退
现在要把家里所有摄像头关电源,不然一直报警
第 1 条附言 &·& 143 天前
app store 反馈
第 2 条附言 &·& 142 天前
官方在 appstore 回复说关闭位置即可,果然可以了,新版本正在审核
9 回复 &| &直到
09:50:08 +08:00
& &143 天前
我昨天更新的,没有闪退,你可以试试在设置里仅删除应用,然后重装
& &143 天前
& &143 天前
@ #1 试过依然如故
看过小米社区有同样报告我就放心了,不是我的系统问题
& &143 天前
& &143 天前
你是不是英文的系统?我之前系统语言是中文的,闪退,改成中文后就可以了。一个经验。
& &143 天前
打错了。
你是不是英文的系统?我之前系统语言是英文的,闪退,改成中文后就可以了。一个经验。
& &143 天前
@ #5 我是简体中文,一晚都找不到解决方法
& &143 天前
我感觉和米家没啥关系....
打个农药 每天感觉也至少有一次闪退..(dfu 新装的 ios11)
感觉 ios 的问题
& &143 天前
@ #8 升级之前没任何问题啊,不是升级 ios11 是升级米家,我的农药一直没任何问题
& · & 2079 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.0 · 65ms · UTC 09:25 · PVG 17:25 · LAX 02:25 · JFK 05:25? Do have faith in what you're doing.}

我要回帖

更多关于 王者荣耀打完一局闪退 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信