我使用Cordova为iOS和Android编写了一个混合游戏.这款游戏在iOS和Android上都运行得很好,我几乎准备好发布它,但我只需要制作一些启动画面.完成后,我在两个平台上进行了一次最终测试,结果发现几分钟后Android上的游戏崩溃!它以前从未这样做,我不知道是什么导致它.最新的是我的手机在玩游戏时变得如此热,一段时间后你几乎不能再拿它了(我测得126F).
我只使用两个插件:cordova-plugin-admob-free和cordova-plugin-splashscreen.出于测试目的,我删除了两个以查看它们是否导致崩溃,但崩溃仍然存在.
当使用Cordova(cordova运行android - 设备)构建游戏时崩溃,如果我在PhoneGab Build上构建它并手动安装apk.
我已尝试使用chrome:// inspect进行调试,但我没有看到控制台上出现任何错误.我也跑了
adb logcat
Run Code Online (Sandbox Code Playgroud)
但是日志太复杂了,我无法理解导致崩溃的原因.如果有人想看一下,我已经在这里上传了一份日志副本.游戏的名称是"mygame"(这不是它的名字,但我将其更改为日志文件中的名称).
我不知道如何找出造成这次崩溃的原因.在iOS上,一切都很好.这只是导致此问题的Android.如果您需要更多信息或者我需要更具体,请告诉我您需要的更多信息,我会将其添加到这篇文章中.
编辑2018年8月24日: 我已经能够在另一部Android手机和模拟器上进行测试,并且没有在那里崩溃.我仍然需要弄清楚导致崩溃的原因,因为它是我手机上崩溃的唯一应用程序.我还想知道当我运行它时会导致巨大的电池耗尽.这也是新的.
编辑2018年8月26日: 嗯,更多的Android设备正在经历崩溃.我在我的设备上做了一些测试.我删除了两个Cordova插件(AdMob en SplashScreen)en启动游戏.我让它坐在开始屏幕上,所以在那一点上,还没有创建任何游戏对象,它所做的只是一些简单的计算和一些context.drawImage()调用.一段时间后手机仍会变热并崩溃.可能是context.drawImage()有内存泄漏吗?
编辑2018年8月27日: 我剥离了应用程序,以便在游戏的主循环中只剩下两个drawImage()(和一个requestAnimatonFrame()).一个drawImage()将画布作为源,另一个作为img对象.一段时间后它仍然崩溃.然后我用一个img对象作为源删除了drawImage(),经过一个小时的测试后它仍然没有崩溃.然后我添加了一些drawImage()全部用画布作为源 - 并且没有崩溃.然后我用img对象替换了画布作为源,几分钟后它就崩溃了.所以我认为将img对象作为源的drawImage()导致崩溃是安全的吗?
编辑2018年8月29日: 我在我的代码中更改了所有drawImages()以使用画布作为源.画布仅使用图像填充一次.我第一次跑完比赛时,它并没有崩溃!我以为我已经解决了这个问题,但经过一些测试后我发现它确实崩溃了,但游戏崩溃需要更长的时间.因此,即使这是朝着解决一个很好的一步,但它仍然是没有的解决方案.
编辑2018年8月30日: 我能够通过Android Studio运行游戏,当它崩溃时,调试控制台显示:
E/chromium: [ERROR:gl_fence_egl.cc(55)] Failed to get EGLSync attribute. error code:12300
W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
Chrome build fingerprint:
68.0.3440.91
344009152
### ### ### ### ### ### ### ### ### ### ### ### ###
A/libc: Fatal …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个基于cordova/AngularJS的跨平台应用程序,带有一些第三方插件(主要是蓝牙),我正在寻找一种方法来调试应用程序的本机Java代码或日志崩溃信息.
应用程序通过cordova运行android --debug命令在KitKat 4.4.4/Samsung Galaxy S4上运行
IDE目前是带有Cygwin控制台的NetBeans
javascript控制台没有提供崩溃的信息,但显然与我使用的蓝牙插件有关https://github.com/bcsphere/bluetooth
我已经尝试过使用adb logcat命令,但似乎只是在不提供任何特别有用的东西的情况下连续打印数据一段时间.
掌握Java的基本知识,如果可能的话,有兴趣找到导致崩溃的Java错误.非常感谢任何帮助,谢谢.