针对 Creator 2.1 及以下版本的 iOS 14 原生平台适配说明

https://forum.cocos.org/t/creator-2-1-ios-14/97925

Creator 1.x、2.0、2.1 版本的部分项目,升级到 iOS 14 后可能会在动态加载资源时遭遇黑屏。如果遇到这个问题的话需要手动进行适配。

问题的根源在于,Creator 2.2.0 之前在 iOS 14 上出于性能、包体的考虑一直使用的是 iOS 系统自带 的 JavaScriptCore(JSC)脚本引擎,JSC 在 iOS 上比之前 Cocos2d-JS 所用的 SpiderMonkey 会有一些性能优势。
但是 JSC 的实现并不规范,为了匹配 Creator 的类型系统,我们在引擎编译时做了 workaround,如 1.10 加入的 instanceof shim 6,还有之前的 typeof shim 3。但是 iOS 14 修改了自带的 JSC 的原有行为,使得我们的 typeof 判断跟着出错了。
(从 V8 支持 JIT-less 15 开始,我们也第一时间在 Creator 2.2.0 中把 iOS 上的 JSC 替换成了 V8,因此新版本用户已经没有这些问题了。)

 

适配方法:

一、打开编辑器安装目录下的 resources/engine/bin/jsb_polyfill.js 文件(Mac 在 Contents/Resources 目录下),替换文件末尾的最后一个函数体,原先代码:

function t(t) {
  ...
}

替换为:

function t(t) {
  return t && t.constructor === Function ? "function" : "object";
}

二、打开同目录下的 jsb_polyfill.dev.js,同样替换文件末尾的最后一个函数体,原先代码:

function __realTypeOfObj(obj) {
  ...
}

替换为:

function __realTypeOfObj(obj) {
  return obj && obj.constructor === Function ? "function" : "object";
}

替换后重新构建项目即可。构建后请重新在所有目标 iOS 操作系统版本上进行验证,而不仅仅是验证 iOS 14,确保都可以正常运行。

 

改完请定制js引擎

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mrwql

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值