Bugly

一、iOS 崩溃

1、崩溃信息

【全部】崩溃信息截图如下:

image-20230526150407119

2、分析

image-20230526163957707

问题id 问题描述 发生次数
#1038 SIGSEGV 腾讯播放器问题 236
其他 其他问题 7

腾讯播放器占比超95%,已修复,待上线。

二、Android 崩溃

1、崩溃信息

image-20230526150921436

2、分析

image-20230526164207063

模拟器相关 43+/72 > 60%

即至少能再降低60%崩溃率。

三、iOS Flutter错误

1、错误信息

image-20230526151515956

1、分析

image-20230526165153853

与游戏webView相关的异常错误达 7000+/8000 > 87.5%。

原因:app调用游戏webView提供的js,h5那边返回了不支持的类型。

影响:只是异常错误,实际无业务影响。

即处理后能降低 87.5%,预计为 5.08% = 12.5% * 40.66%

四、Android Flutter 错误

1、错误信息

image-20230526165814931

2、分析

image-20230526170106312

已处理 524+ / 1200 ≈ 43.7%

五、小结

描述 新百分比 旧百分比 旧主要问题 旧非主要问题
时间 05-31 -> 10.31 2023-05-26 2023-05-26 2023-05-26
iOS崩溃 0.419%->5.09‱ 2.70 % 2.565%:95%腾讯播放器 0.135%
Android崩溃 0.478%->3.60‱ 1.51% 0.910%:60%+模拟器 0.6%
iOS错误 40.66% 34.58%:> 87.5% webView游戏 5.08%
Android错误 4.93% 10.59% 4.530%:类型或退出异常,已处理43.7% 6.06%

End

游戏通讯协议的选择TCP?UDP?HTTP?WebSocket?

二、协议选择

通过以上对协议特性分析,我想大家心里已经有低儿了。根据小编的工作经验以及对游戏理解,有以下建议:

1、对于弱联网类游戏,必须消除类的,卡牌类的,可以直接HTTP协议,考虑安全的话直接HTTPS,或者对内容体做对称加密;

2、对于实时性,交互性要求较高,且team有过相关经验,可以优先选择websocket,其次TCP协议;

3、对于实时性要求极高,且可达性要求一般可以选择UDP协议;

4、局域网对战类,×××类,直接来UDP协议吧(公网对战,P2P的UDP还得“打洞”处理,后面分享会讲到)

其他无关

#8030 SIGTRAP(TRAP_BRKPT)

image-20230524132453348

主要原因:Webview渲染线程导致APP崩溃

发生次数:4

#8002 SIGTRAP #4002 SIGABRT #6040 SIGABRT #4028 SIGABRT #2038 SIGABRT

分析原因:用户使用的是Android模拟器,具体版本为Android模拟器Android 7.1.2,level 25,CPU架构为x86、x86_64,设备ROOT占比100%

发生次数:84+5+8

#5008 SIGABRT

分析原因:在分析崩溃日志时,发现每次发生此项崩溃是在用户从后台返回前台时

发生次数:11 (只在 redmi note 8 pro机型有上报此项错误)

#3032 SIGABRT

分析原因:SIG是信号名的通用前缀。ABRT是abort program的缩写。当操作系统发现不安全的情况时,它能够对这种情况进行更多的控制,必要的话,它能要求进程进行清理工作。在调试造成此信号的底层错误时,并没有什么妙招。 如 cocos2d 或 UIKit 等框架通常会在特定的前提条件没有满足或一些糟糕的情况出现时调用 C 函数 abort (由它来发送此信号)。

发生次数:7

#10 java.lang.NullPointerException

Attempt to invoke virtual method ‘io.flutter.plugin.common.PluginRegistry$RequestPermissionsResultListener com.lyokone.location.FlutterLocationService.getServiceRequestPermissionsResultListener()’ on a null object reference

分析原因:百度定位库在调用了空对象的方法,引发空指针问题。

发生次数:5

#3034 SIGSEGV(SEGV_MAPERR)

#03 pc 0000000000129d48 /vendor/lib64/egl/libRBGLESv2_adreno.so (rb_perform_resolve+616) [arm64-v8a::d49019399b6d1ce7075020c1e441c844]

分析原因:这是一个与SIGSEGV (Segmentation Fault)错误相关的错误消息。它指示在运行时出现了一个段错误,也称为内存访问错误。在您提供的错误消息中,指出错误发生在libRBGLESv2_adreno.so库的rb_perform_resolve函数中。libRBGLESv2_adreno.so是Qualcomm Adreno GPU驱动程序中的库文件。Adreno是Qualcomm开发的一系列图形处理器(GPU),广泛用于移动设备和嵌入式系统中。该库提供了OpenGL ES 2.0(Embedded Systems)的实现,允许应用程序在使用Adreno GPU的设备上进行图形渲染和加速。

在bugly日志上显示出现上述错误线程为Chrome_InProcGp线程,Chrome_InProcGp 线程是Webview其中一个处理渲染和绘图任务的线程。它负责管理和执行网页内容的呈现、布局和绘制操作,包括处理 HTML、CSS 和 JavaScript,解析页面内容并生成可视化的渲染结果。

发生次数:8 影响设备:2

#4102 SIGSEGV(SEGV_MAPERR)

分析原因:发生崩溃线程为Chrome_InProcGpuThreadChrome_InProcGpuThread 是 Chrome 浏览器中的一个线程,它是与 GPU 相关的线程之一。在 Chrome 的多进程架构中,GPU 线程用于处理图形渲染和加速,以提供流畅的图形显示和动画效果。

发生次数:5 影响设备:1 系统版本:Android 6.0.1,level 23

问题编号 发送次数 影响设备 备注
#12004 23 14 已修复
#9075 7 1 模拟器
#8088 6 1 模拟器
#2038 4 2 模拟器
#3034 3 1 模拟器
#2110 2 1
#5008 2 1
#8020 2 2
#10057 1 1
#10 1 1
其他 21 - 其他发送次数为1,影响设备为1的问题
汇总 72
模拟器 288->20 27.7%
已修复 23 31.9%
其他 29 40.2%

iOS bugly 崩溃

img

img

img

img

这个问题已于 4.20 提交工单,工单多次反馈已修复问题,多次升级sdk均未解决问题。

5.9重新提交工单,并投诉。自行在愿望屋app1.2.0版本hook仓储,对此方法添加容错处理,未生效。

img

工单记录

img

img

img

image-20230524132704989