-
Creator 版本:3.5.0
-
目标平台:Android
-
重现方式:
- 将整个
assets
下的内容移动到remote-asset
下面 - 将
/data/user/0/com.win.cvtxwqy.miisf/files/remote-asset/
增加到script search path
里 - 启动程序报错
报错信息如下:
2022-09-30 15:54:48.810 8163-8199/com.win.cvtxwqy.miisf I/Cocos: 15:54:48 [INFO]: searchPath: /data/user/0/com.win.cvtxwqy.miisf/files/remote-asset/
2022-09-30 15:54:48.810 8163-8199/com.win.cvtxwqy.miisf I/Cocos: 15:54:48 [INFO]: searchPath: @assets/data/
2022-09-30 15:54:48.810 8163-8199/com.win.cvtxwqy.miisf I/Cocos: 15:54:48 [INFO]: searchPath: @assets/Resources/
2022-09-30 15:54:48.810 8163-8199/com.win.cvtxwqy.miisf I/Cocos: 15:54:48 [INFO]: searchPath: @assets/
2022-09-30 15:54:48.813 8163-8199/com.win.cvtxwqy.miisf I/Cocos: 15:54:48 [INFO]: run here 1
2022-09-30 15:54:48.813 8163-8199/com.win.cvtxwqy.miisf I/Cocos: 15:54:48 [INFO]: run here 2
2022-09-30 15:54:48.820 8163-8199/com.win.cvtxwqy.miisf E/jswrapper: ERROR: Uncaught SyntaxError: Unexpected end of input, location: jsb-adapter/jsb-builtin.js:0:0
2022-09-30 15:54:48.820 8163-8199/com.win.cvtxwqy.miisf E/Cocos: 15:54:48 [ERROR]: [ERROR] file D:/ProgramFiles/CocosDashboard/resources/.editors/Creator/3.5.0/resources/resources/3d/engine/native/cocos/application/CocosApplication.cpp: line 140
2022-09-30 15:54:48.820 8163-8199/com.win.cvtxwqy.miisf E/Cocos: 15:54:48 [ERROR]:
Uncaught Exception:
- location : jsb-adapter/jsb-builtin.js:0:0
- msg : Uncaught SyntaxError: Unexpected end of input
- detail :
2022-09-30 15:54:48.820 8163-8199/com.win.cvtxwqy.miisf I/Cocos: 15:54:48 [INFO]: run here 3
2022-09-30 15:54:48.820 8163-8199/com.win.cvtxwqy.miisf I/Cocos: 15:54:48 [INFO]: script [jsb-adapter/jsb-builtin.js] is empty? true
读取 jsb-adapter/jsb-builtin.js
直接报错了
修改的代码如下
v8::ScriptOrigin origin(_isolate, originStr.ToLocalChecked());
v8::MaybeLocal<v8::Script> maybeScript = v8::Script::Compile(_context.Get(_isolate), source.ToLocalChecked(), &origin);
bool success = false;
CC_LOG_INFO("script [%s] is empty? %s", fileName, maybeScript.IsEmpty() ? "true" : "false");
if (!maybeScript.IsEmpty()) {
v8::TryCatch block(_isolate);
v8::Local<v8::Script> v8Script = maybeScript.ToLocalChecked();
v8::MaybeLocal<v8::Value> maybeResult = v8Script->Run(_context.Get(_isolate));
CC_LOG_INFO("script [%s] run result is empty? %s", fileName, maybeResult.IsEmpty() ? "true" : "false");
if (!maybeResult.IsEmpty()) {
v8::Local<v8::Value> result = maybeResult.ToLocalChecked();
if (!result->IsUndefined() && ret != nullptr) {
internal::jsToSeValue(_isolate, result, ret);
}
success = true;
}
if (block.HasCaught()) {
v8::Local<v8::Message> message = block.Message();
SE_LOGE("ScriptEngine::evalString catch exception:\n");
onMessageCallback(message, v8::Undefined(_isolate));
}
}
if (!success) {
SE_LOGE("ScriptEngine::evalString script %s, failed!\n", fileName);
}
报错点是这一句
v8::MaybeLocal<v8::Script> maybeScript = v8::Script::Compile(_context.Get(_isolate), source.ToLocalChecked(), &origin);
请问有什么办法解决下?