ekibun/flutter_qjs

macOS的desktop端首次启动失败

gzlock opened this issue · 2 comments

Flutter 2.0.6 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 1d9032c7e1 (11 天前) • 2021-04-29 17:37:58 -0700
Engine • revision 05e680e202
Tools • Dart 2.12.3

已下载最新的 QuickJS 到/flutter_js/cxx/quickjs 文件夹

console提示Podfile过期,但是flutter_js/macos/这个文件夹内没有Podfile文件

Launching lib/main.dart on macOS in debug mode...
Warning: Podfile is out of date
  This can cause issues if your application depends on plugins that do not support iOS or macOS.
  See https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms for details.
  If you have local Podfile edits you would like to keep, see https://github.com/flutter/flutter/issues/45197 for instructions.
To regenerate the Podfile, run:

  rm macos/Podfile

Building macOS application...
In file included from /Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:8:
In file included from /Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.h:1:
/Users/lock/Desktop/flutter_qjs/macos/cxx/quickjs.h:524:30: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long long') to 'int32_t' (aka 'int') [-Wshorten-64-to-32]
        v = JS_NewInt32(ctx, val);
            ~~~~~~~~~~~      ^~~
/Users/lock/Desktop/flutter_qjs/macos/cxx/quickjs.h:607:12: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    return js_unlikely(JS_VALUE_GET_TAG(v) == JS_TAG_EXCEPTION);
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/lock/Desktop/flutter_qjs/macos/cxx/quickjs.h:37:31: note: expanded from macro 'js_unlikely'
#define js_unlikely(x)        __builtin_expect(!!(x), 0)
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/lock/Desktop/flutter_qjs/macos/cxx/quickjs.h:612:12: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    return js_unlikely(JS_VALUE_GET_TAG(v) == JS_TAG_UNINITIALIZED);
    ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/lock/Desktop/flutter_qjs/macos/cxx/quickjs.h:37:31: note: expanded from macro 'js_unlikely'
#define js_unlikely(x)        __builtin_expect(!!(x), 0)
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:97:33: error: use of undeclared identifier 'JS_GetClassID'; did you mean 'JS_NewClassID'?
            JSClassID classid = JS_GetClassID(obj);
                                ^~~~~~~~~~~~~
                                JS_NewClassID
In file included from /Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:8:
In file included from /Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.h:1:
/Users/lock/Desktop/flutter_qjs/macos/cxx/quickjs.h:499:11: note: 'JS_NewClassID' declared here
JSClassID JS_NewClassID(JSClassID *pclass_id);
          ^
/Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:97:47: error: no viable conversion from 'JSValue' to 'JSClassID *' (aka 'unsigned int *')
            JSClassID classid = JS_GetClassID(obj);
                                              ^~~
In file included from /Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:8:
In file included from /Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.h:1:
/Users/lock/Desktop/flutter_qjs/macos/cxx/quickjs.h:499:36: note: passing argument to parameter 'pclass_id' here
JSClassID JS_NewClassID(JSClassID *pclass_id);
                                   ^
/Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:286:12: error: use of undeclared identifier 'JS_IsPromise'; did you mean 'jsIsPromise'?
    return JS_IsPromise(ctx, *val);
           ^~~~~~~~~~~~
           jsIsPromise
/Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:284:21: note: 'jsIsPromise' declared here
  DLLEXPORT int32_t jsIsPromise(JSContext *ctx, JSValueConst *val)
                    ^
/Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:286:30: error: no viable conversion from 'JSValue' to 'JSValue *'
    return JS_IsPromise(ctx, *val);
                             ^~~~
/Users/lock/Desktop/flutter_qjs/macos/cxx/ffi.cpp:284:63: note: passing argument to parameter 'val' here
  DLLEXPORT int32_t jsIsPromise(JSContext *ctx, JSValueConst *val)
                                                              ^
3 warnings and 4 errors generated.
note: Using new build system
note: Building targets in parallel
note: Planning build
note: Constructing build description
** BUILD FAILED **

Exception: Build process failed


对没有接触过CMake的新手来说好难😭

quickjs要用我改过的版本。试试把cxx/quickjs文件夹清空,然后用下面的代码拉取对应的quickjs

git submodule update --init --recursive