微信小游戏下加载大文件json ios直接闪退

2.0.8版本
小游戏下加载包外大文件json(10MB) ios直接闪退

以下是加载模块的代码

应该是内存分配超过上限了,只能将JSON文件拆分规避问题,这个是属于微信小游戏的问题。

我直接使用微信小游戏的api调用,并不会闪退

使用的接口和creator之间没有关联性,可否提供下复现的demo?

直接调用微信小游戏的 API,没有加载游戏?

同一份json,使用cc.loader.load的方式加载闪退,使用wx.request的方式加载正常。
在进入了游戏的基础上

估计是用到的 API 不太一样。可能 wx 的 JSON 生成对象的过程中内存爆掉了。wx.request 不知道是不是底层复用了比较多的原生内存所以没爆掉。这个建议你们如果有这种特殊需求,就用 wx 原生 API 吧。我们这边很难去解决闪退问题,毕竟底层是微信的,引擎就用 js 实现的没理由会导致应用崩溃。

我们也只能是想办法绕过去了。
不过这种应用场景其实挺常见的,稍微重度点的游戏,数据表都会上到这个量级的。

问题我找到了
以下代码会导致崩溃
wx.request({ url:url, success (res) { var ct = JSON.stringify(res.data); var js = JSON.parse(ct); } })
以下代码不会导致崩溃
wx.request({ url:url, success (res) { var data = res.data; } })

wx.request返回的数据已经是json对象的,引擎是处于什么目的而先进行JSON.stringify再进行JSON.parse这种操作的呢,毫无必要啊

谢谢反馈,这是 adapter 中的代码,这些代码最初是微信提供的,我们并没有进行太多定制。
具体原因可能是跟当初微信缓存的实现机制有关,应该是为了实现深拷贝吧?
我们会再跟进一下这个问题。

ip6p及以下的机型上出现相同问题。
json表量级13MB以上
拆分为单个文件为4MB上下,闪退机率降低。

Creator版本为2.0.10

1赞

这是我们拟订的修复方案 https://github.com/cocos-creator-packages/weapp-adapter/pull/101

good job