后面有遇到的用户,麻烦上传手机上/data/anr/xx.txt, 可能叫trace.txt,里面会详细记载了各个线程在出现anr时的运行状态。
同时提供出现anr的引擎版本,手机设备信息:android 操作系统版本(5-14),设备商或手机具体型号
后面有遇到的用户,麻烦上传手机上/data/anr/xx.txt, 可能叫trace.txt,里面会详细记载了各个线程在出现anr时的运行状态。
同时提供出现anr的引擎版本,手机设备信息:android 操作系统版本(5-14),设备商或手机具体型号
我们也遇到了,不知道你们怎么解决的
我也出现了。好多。3.6.1
android_native_glue这个有bug
遇到过,目前我也不知道问题所在。 看线程有很多,有定位切后台的打印,目前我猜测是游戏切后台,还做了一堆的事情。
目前没有可复现的环境,猜测
如果是游戏逻辑比较耗时,可以考虑合并这个pr,然后观察下
这个修改需要升级ndk版本到28么?
不需要,这是GameActivity内部的bug,参考PR微改下就行
好的好的 上线看情况
这个问题我提过issue,Cocos引擎v386已经解决了(无亲测,无法100%确定是否解决),简而言之就是把GameActivity的 ALooper_pollAll换成 ALooper_pollOnce
3.8.6之前的版本,可根据引擎的PR【推荐】或者参考我自己DIY的做法合并引擎就可以解决 AGDK/GameActivity ANR Bug · Issue #17841 · cocos/cocos-engine
如果对Android主循环感兴趣,可以看我给Google提的issue There is a bug in AGDK/android_native_app_glue that causes an ANR. [377940980] - Issue Tracker
我们也遇到了这个问题,我们用3.8.3开始使用一直存在这个ANR问题,然后我们最近也更新到了3.8.6,观察了大概10天,新版本这个ANR问题没有下降,还是存在。我们也检查过了工程里的AndroidPlatform.cpp的确改成ALooper_pollOnce了。现在应该怎么解决呢,我们用的ndk是23.2,引擎3.8.6
升到3.8.6把 ALooper_pollAll 换成 ALooper_pollOnce并不能解决这个ANR
anr 概率确认没下降? 是否有可复现的demo ?
我们没升到386,我是基于373 DIY修改的,方案不是该ALooper,跟官方不一样, AGDK/GameActivity ANR Bug · Issue #17841 · cocos/cocos-engine
确认没有下降。我们是4月25号左右更新的版本,升级到了3.8.6。观察到今天了。 我们是自己的项目在谷■后台统计的,没有单独的demo。
好的,谢谢,那我们试试这个修改
想请教一下,我看了你的修改方案,想问一下这个 onPause函数除了要新增一些代码,还要把原来的 android_app_set_activity_state(ToApp(activity), APP_CMD_PAUSE);注释掉?
是的,切换到后台,AGDK会执行onPause函数,如果还设置CMD_PAUSE,后续ALooper就会处理这个pause命令,进而可能引发ANR
我的方案是将pause状态暂存到一个状态栈,等后续process_cmd执行,优先从状态栈中读取状态处理