关于安卓微信(7.0.3)兼容性问题的处理结果

今天(1 月 31 日)有不少开发者反馈 安卓升级到微信小游戏 7.0.3 版本后,小游戏时会出现画面模糊或者卡顿等问题。由于今天就是春节前送审的最后一天了,为了不影响大家的游戏上线,麻烦有遇到相关问题的开发者通过下述措施对游戏进行临时修复。

问题 1:部分安卓机型上画面变得模糊

解决方案:在发布后的 main.js 文件中的 onStart 函数里添加下列代码(主域与子域都需要添加该代码,否者子域触摸区域会有问题

cc.ContainerStrategy.prototype._setupContainer = function (view, w, h) {
    var locCanvas = cc.game.canvas, locContainer = cc.game.container;

    if (!CC_WECHATGAME && cc.sys.os === cc.sys.OS_ANDROID) {
        document.body.style.width = (view._isRotated ? h : w) + 'px';
        document.body.style.height = (view._isRotated ? w : h) + 'px';
        // Setup style
        locContainer.style.width = locCanvas.style.width = w + 'px';
        locContainer.style.height = locCanvas.style.height = h + 'px';
    }

    // Setup pixel ratio for retina display
    var devicePixelRatio = view._devicePixelRatio = 1;
    if (view.isRetinaEnabled()) {
        devicePixelRatio = view._devicePixelRatio = window.devicePixelRatio || 1;
    }
    // Setup canvas
    locCanvas.width = w * devicePixelRatio;
    locCanvas.height = h * devicePixelRatio;
};
cc.view.enableRetina(true);

通知:根据微信爸爸最新的公告,如果是模糊问题,可延迟到 2 月 1 日送审!

问题 2:因 DeviceMotion 导致的卡顿或帧率不稳(v2.0.7 的才需要修改)

解决方案:需要修改微信适配层中的 DeviceMotionEvent 文件,可以下载我们修改好的版本 DeviceMotionEvent.js.zip,替换微信小游戏适配代码中 builtin/weapp-adapter/wechatgame/libs/engine/DeviceMotionEvent.js 文件。可以点击编辑器中的这个按钮,快速定位到该目录,记得替换后需要重新构建微信主域和子域,必须确保文件替换生效

问题 3:文本显示变成黑块(v2.0.0 - v2.0.6,以及 v2.1.0 才需要修改)

解决方案:请 定制引擎,参考 这个提交 中的改动直接修改引擎中的“cocos2d/core/renderer/render-engine.js”文件。

问题 4:其它原因导致的卡顿

大部分游戏修复完以上问题,卡顿就能解决,就可以先送审。不过少部分游戏还是会遇到奇怪的卡顿,这种情况无需做任何处理,也不用专门提交版本。今晚游戏应该就已经自动恢复正常运行了。

更新 1:我们不断接收到开发者反馈,春节过后卡顿仍然存在,游戏数据也会受到影响。对此我们也没有想到。我们现在正在重新针对 7.0.3 的全新渲染架构调整引擎底层,尽量避免会卡顿的底层调用,同时请求微信进行架构优化,尽量避免卡顿。

更新 2:如果升级到 2.0.9 rc 版仍然卡,请先隐藏子域。子域问题我们这边优化不了,不过微信最近也在完善当中,可能就快要官方修复了!

非常抱歉,本次事件暴露了我们工作上的不足,给各位开发者朋友带来了困扰。我们深知每一款游戏都是大家披星带月的劳动成果,未来会尽力确保游戏能够稳定运行,这是对大家的努力付出最基本的尊重。新的一年里,我们还将加大基础投入和制度建设,助力游戏行业全面发展。
非常感谢热心提供反馈的开发者们,感谢奎特尔星球协助转发!预祝大家新春快乐,旅途愉快!

事故 Postmortem


为了不影响大家的工作,2 月 11 日前我们就会发布 Creator 2.0.8,紧急修复引擎相关问题。

4赞

今晚就截止上传了,怕是要改死人咯…

devicePixelRatio 这个 谁给解释下?

仿佛并没有解决卡顿的问题,还是一样的卡

1赞

没有这个目录呀?

确实卡顿问题,改善不明显。

1.9.3

性能问题改善不明显

关于卡顿问题:
是这个帖子里的卡顿问题么
https://forum.cocos.com/t/2-0-7-49-56/73025

你这个测试是在安卓 7.0.3 出现的吗?

是的,刚看了下,是7.0.3

@Knox 我觉得每个版本开一个这样的帖子很有必要~汇总当前版本的问题,和解决办法,
我也开过帖子,奈何总是被淹没·····
谢谢老大

按照问题2种的方法,替换了DeviceMotionEvent文件,毫无作用

问题1经过修改可以看出不糊了,但是问题修改过后还是明显卡顿,急求方法解决

https://developers.weixin.qq.com/community/minigame/doc/00082caf94ce38adbe080b1e55b800

我发了个贴子建议官方调整停审时间。有需要的朋友附议一下,以便引起官方重视。

同样一份代码,在update里面执行了一个10的for循环,用来播放飘字动画,ios FPS都是60,单在安卓上FPS 10左右,根据你上面提供的两个方案试了都不能解决。

卡顿应该是其他问题导致的,目前还在排查中