更新3.8.3版本后安卓打包出问题

  • Creator 版本: 3.8.3

  • 目标平台: Android

这两天把项目从3.8.2版本更新到了3.8.3版本,更新之前,安卓打包后都能正常运行,更新最新版本后,在构建面板没有勾选“debug”的情况下打包运行游戏发现总是在加载页面卡住,真机调试日志的输出如下:
image
image
从日志来看是在执行“assetManager.loadBoundle”触发的报错,并且这个报错是在加载“MainSceneBoundle”时报的,但这个在加载过程中因为什么报的这个错光这些错误信息是无法了解的。


以下是我在“debug”模式下构建的安卓打包真机运行截图:
image
显然debug模式下就没有出现这个问题。


于是我在assetManager.loadBoundle执行过程加了try catch,然后在没有勾选“debug”的情况下构建安卓打包真机运行,目前报错如下:
image
image

从截图上来看,目前catch捕获的错误描述是“SyntaxError: Invalid left-hand side in assignment”;
是赋值语法问题?3.8.2版本的时候没有勾选“debug”构建安卓打包都能正常运行?还有就是在3.8.3版本下为什么在“debug”模式下构建安卓打包真机运行就不会有这个问题?以及在浏览器上运行也没有问题。


错误信息里提到了“assets/MainSceneBundle/index.js”,但这个文件太大了,无法知道具体是哪块代码出了问题,由于在构建面板勾选“debug”打包进行安卓真机调试又不会报这个错误,那我这边怎么定位是哪个文件的哪行代码问题?


我把错误信息文本拷贝出来如下:
E 16:29:26 [ERROR]: E/ ScriptEngine::evalString script assets/MainSceneBundle/index.js, failed!
2024-05-26 16:29:26.592 9821-9862 Cocos com.fanrncho E 16:29:26 [ERROR]: E/ [ERROR] Failed to invoke require
2024-05-26 16:29:26.592 9821-9862 Cocos com.fanrncho E 16:29:26 [ERROR]: JS: 捕获到异常: Invalid left-hand side in assignment
2024-05-26 16:29:26.594 9821-9862 Cocos com.fanrncho E 16:29:26 [ERROR]: JS: 堆栈跟踪: SyntaxError: Invalid left-hand side in assignment
at jsb-adapter/engine-adapter.js:1724:18
at download (jsb-adapter/engine-adapter.js:1733:5)
at downloadScript (jsb-adapter/engine-adapter.js:1716:3)
at jsb-adapter/engine-adapter.js:1865:7
at jsb-adapter/engine-adapter.js:1416:21
at Object.readFile (jsb-adapter/engine-adapter.js:1386:19)
at readJson (jsb-adapter/engine-adapter.js:1406:13)
at parseJson (jsb-adapter/engine-adapter.js:1831:3)
at download (jsb-adapter/engine-adapter.js:1733:5)
at downloadJson (jsb-adapter/engine-adapter.js:1840:3)


请官方帮忙看看问题,怎么解决?

未必都是因为Promise,也可能是async函数中有错误等。建议使用原生JavaScript调试看一下JS哪里报错了。

image 你建议的方法中提到了开启“Debug”模式,我目前的问题是在“Debug”模式下安卓打包后是不会报上面的问题的,所以这个方法无法测试。有没有其他方法了?

有没有官方大佬出来帮忙看看这个问题

周末没人值班

好,那明后两天再看看

麻烦看下这行的代码是啥?

image
我尝试过在“globalThis.require(src)”代码块添加try…catch,在catch捕获的时候把“src”打印出来了,就是“assets/MainSceneBundle/index.js”,这个文件我看了下是“MainSceneBundle”包内所有代码文件的合并内容。

jsb-adapter/engine-adapter.js:1724:18

你报错的 engine-adapter.js 1724 这行,看一下是啥。

就是这张截图里面红框标注的内容:
image

好的。请私信我,把微信发我,我加你,看看是否远程调一下。

能否提供一下解决方案的思路(定位我这边项目代码具体报错的行号,或者关键字),目前远程不太方便。

你们能上微信吗?方便的话,加个微信,然后我把一些测试代码发你试试看。

好的,微信聊

Issue: https://github.com/cocos/cocos-engine/issues/17055

我是用3.8.2打包安卓,报错是Game.h中报错是‘platform/Application.h’ file not found [arr64-v8a],之前用的3.4.1打包没问题,请问你遇到过没得?怎么改呢?或者说能麻烦你给出你打包配置么?我卡了几天了 改来改去都不对

没遇到过这种问题,你问问引擎开发人员吧

如果是从 3.4 升级,那么删除一下 native 和 build 目录,重新构建看看。
出现这个问题,可能跟 3.5 中平台代码有比较大的调整有一定关系。

我也是这个问题,我是直接3.8.3构建的iOS,没有升级。请问怎么处理呢?没勾调试模式的情况,运行不了,如图:

找下项目中有没有这种写法。

let aaa = bbb?.foo(); 

改写法为:

let aaa;
if (bbb) aaa = bbb.foo();

我近期跟进看看。应该跟脚本编译的一些环境有调整有一定关系。