fabric部署,运行e2e_cli出现的问题:ERRO 001

在fabric部署过程中,运行e2e_cli时常常遇到ERRO 001错误,主要原因是镜像不全、版本不匹配及ltdl.h文件缺失。解决方案包括:确保fabric版本与镜像一致,完整下载所有必需镜像,处理cryptogen生成公私钥和证书时的错误,以及修正配置文件中的网络名称。对于缺少ltdl.h,需要安装libltdl-dev。有时还需修改.bashrc文件使go环境变量生效。

fabric部署,运行e2e_cli出现的问题:

最常见的就是ERRO 001 cannot run peer because error when setting up MSP from directory /opt/gopath/src/......。出现这个问题主要是由于镜像没下全以及缺少ltdl.h文件的原因,当然还要确定你的fabric版本与你下的镜像版本一致,我使用的是v1.0.0。

解决方式如下:

1.确定fabric版本与你下的镜像版本一致(推荐使用v1.0.0):

在fabric目录下输入git checkout v1.0.0


版本一致的话就会输出:

不正确的话则在fabric目录下输入git clone https:/

error Failed to install the app. Command failed with exit code 1: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 No modules to process in combine-js-to-schema-cli. If this is unexpected, please check if you set up your NativeComponent correctly. See combine-js-to-schema.js for how codegen finds modules. No modules to process in combine-js-to-schema-cli. If this is unexpected, please check if you set up your NativeComponent correctly. See combine-js-to-schema.js for how codegen finds modules.: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用或覆盖了已过时的 API。 注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。 注: 某些输入文件使用了未经检查或不安全的操作。 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-worklets-core:buildCMakeDebug[x86_64]'. > com.android.ide.common.process.ProcessException: ninja: Entering directory `/Users/r/example/node_modules/react-native-worklets-core/android/.cxx/Debug/625a6672/x86_64' [0/2] Re-checking globbed directories... [1/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp.o [2/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o [3/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o [4/9] Building CXX object CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o In file included from /Users/r/example/node_modules/react-native-worklets-core/android/cpp-adapter.cpp:6: In file included from /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiWorkletApi.h:14: In file included from /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/sharedvalues/WKTJsiSharedValue.h:8: /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:97:22: warning: exception of type 'const std::runtime_error &' will be caught by earlier handler [-Wexceptions] 97 | } catch (const std::runtime_error &err) { | ^ /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:94:22: note: for type 'const std::exception &' 94 | } catch (const std::exception &err) { | ^ 1 warning generated. [5/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o [6/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.cpp.o In file included from /Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.cpp:1: In file included from /Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.h:14: In file included from /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/sharedvalues/WKTJsiSharedValue.h:8: /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:97:22: warning: exception of type 'const std::runtime_error &' will be caught by earlier handler [-Wexceptions] 97 | } catch (const std::runtime_error &err) { | ^ /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:94:22: note: for type 'const std::exception &' 94 | } catch (const std::exception &err) { | ^ 1 warning generated. [7/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o [8/9] Building CXX object CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp.o In file included from /Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp:3: In file included from /Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.h:14: In file included from /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/sharedvalues/WKTJsiSharedValue.h:8: /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:97:22: warning: exception of type 'const std::runtime_error &' will be caught by earlier handler [-Wexceptions] 97 | } catch (const std::runtime_error &err) { | ^ /Users/r/example/node_modules/react-native-worklets-core/android/../cpp/WKTJsiDispatcher.h:94:22: note: for type 'const std::exception &' 94 | } catch (const std::exception &err) { | ^ 1 warning generated. [9/9] Linking CXX shared library ../../../../build/intermediates/cxx/Debug/625a6672/obj/x86_64/librnworklets.so FAILED: ../../../../build/intermediates/cxx/Debug/625a6672/obj/x86_64/librnworklets.so : && /Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android26 --sysroot=/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D__BIONIC_NO_PAGE_SIZE_MACRO -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -DDEBUG -DJS_RUNTIME_HERMES=1 -fno-limit-debug-info -Wl,-z,max-page-size=16384 -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--no-undefined-version -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -shared -Wl,-soname,librnworklets.so -o ../../../../build/intermediates/cxx/Debug/625a6672/obj/x86_64/librnworklets.so CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletApi.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o -llog -landroid /Users/dsccmac/.gradle/caches/8.12/transforms/52a52e4c4792af3ca58b2df5dfea7545/transformed/react-android-0.78.1-debug/prefab/modules/jsi/libs/android.x86_64/libjsi.so /Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/libs/android.x86_64/libfbjni.so /Users/dsccmac/.gradle/caches/8.12/transforms/52a52e4c4792af3ca58b2df5dfea7545/transformed/react-android-0.78.1-debug/prefab/modules/reactnative/libs/android.x86_64/libreactnative.so /Users/dsccmac/.gradle/caches/8.12/transforms/1727645527b8d4a52140297d30f9ce10/transformed/hermes-android-0.78.1-debug/prefab/modules/libhermes/libs/android.x86_64/libhermes.so /Users/dsccmac/.gradle/caches/8.12/transforms/52a52e4c4792af3ca58b2df5dfea7545/transformed/react-android-0.78.1-debug/prefab/modules/hermestooling/libs/android.x86_64/libhermestooling.so -latomic -lm && : ld.lld: error: undefined symbol: std::__ndk1::placeholders::_1 >>> referenced by WKTJsiPromiseWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiHostObject.cpp:43 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:43) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)) >>> referenced by WKTJsiHostObject.cpp:64 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:64) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)) >>> referenced 1 more times ld.lld: error: undefined symbol: std::__ndk1::placeholders::_2 >>> referenced by WKTJsiPromiseWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiHostObject.cpp:43 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:43) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)) >>> referenced by WKTJsiHostObject.cpp:73 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:73) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)) ld.lld: error: undefined symbol: __cxa_begin_catch >>> referenced by WKTJsiPromiseWrapper.cpp:47 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:47) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:50 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:50) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:32 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:32) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced 12 more times ld.lld: error: undefined symbol: __cxa_end_catch >>> referenced by WKTJsiPromiseWrapper.cpp:35 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:35) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:50 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:50) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:50 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:50) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced 24 more times ld.lld: error: undefined symbol: std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>::basic_string(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&) >>> referenced by WKTJsiPromiseWrapper.cpp:40 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:40) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiWrapper.cpp:119 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:119) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::toString(facebook::jsi::Runtime&)) >>> referenced by tuple:1409 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/tuple:1409) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(std::__ndk1::pair<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const, std::__ndk1::shared_ptr<RNWorklet::JsiWrapper>>::pair[abi:ne180000]<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, 0ul>(std::__ndk1::piecewise_construct_t, std::__ndk1::tuple<std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&>&, std::__ndk1::tuple<>&, std::__ndk1::__tuple_indices<0ul>, std::__ndk1::__tuple_indices<...>)) >>> referenced 22 more times ld.lld: error: undefined symbol: std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>::~basic_string() >>> referenced by WKTJsiPromiseWrapper.cpp:43 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:43) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:48 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:48) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced by WKTJsiPromiseWrapper.cpp:48 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:48) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::runComputation(facebook::jsi::Runtime&, std::__ndk1::function<void (facebook::jsi::Runtime&, std::__ndk1::shared_ptr<RNWorklet::PromiseParameter>)>)) >>> referenced 193 more times ld.lld: error: undefined symbol: std::__ndk1::__shared_weak_count::~__shared_weak_count() >>> referenced by shared_ptr.h:263 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__memory/shared_ptr.h:263) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::RuntimeLifecycleMonitorObject, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>>::__shared_ptr_emplace[abi:ne180000]<facebook::jsi::Runtime*, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>, 0>(std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>, facebook::jsi::Runtime*&&)) >>> referenced by shared_ptr.h:246 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__memory/shared_ptr.h:246) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::RuntimeLifecycleMonitorObject, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>>::~__shared_ptr_emplace()) >>> referenced by shared_ptr.h:263 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__memory/shared_ptr.h:263) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::JsiWrapper, std::__ndk1::allocator<RNWorklet::JsiWrapper>>::__shared_ptr_emplace[abi:ne180000]<RNWorklet::JsiWrapper*&, bool&, std::__ndk1::allocator<RNWorklet::JsiWrapper>, 0>(std::__ndk1::allocator<RNWorklet::JsiWrapper>, RNWorklet::JsiWrapper*&, bool&)) >>> referenced 47 more times ld.lld: error: undefined symbol: __cxa_allocate_exception >>> referenced by WKTJsiWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::getValue(facebook::jsi::Runtime&)) >>> referenced by WKTJsiPromiseWrapper.cpp:209 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:209) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::setValue(facebook::jsi::Runtime&, facebook::jsi::Value const&)) >>> referenced by WKTJsiWrapper.cpp:55 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:55) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::wrap(facebook::jsi::Runtime&, facebook::jsi::Value const&, RNWorklet::JsiWrapper*, bool)) >>> referenced 40 more times ld.lld: error: undefined symbol: __cxa_throw >>> referenced by WKTJsiWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::getValue(facebook::jsi::Runtime&)) >>> referenced by WKTJsiPromiseWrapper.cpp:209 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:209) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::setValue(facebook::jsi::Runtime&, facebook::jsi::Value const&)) >>> referenced by WKTJsiWrapper.cpp:55 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:55) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::wrap(facebook::jsi::Runtime&, facebook::jsi::Value const&, RNWorklet::JsiWrapper*, bool)) >>> referenced 40 more times ld.lld: error: undefined symbol: __cxa_free_exception >>> referenced by WKTJsiWrapper.cpp:25 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:25) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::getValue(facebook::jsi::Runtime&)) >>> referenced by WKTJsiPromiseWrapper.cpp:209 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp:209) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::setValue(facebook::jsi::Runtime&, facebook::jsi::Value const&)) >>> referenced by WKTJsiWrapper.cpp:55 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp:55) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(RNWorklet::JsiWrapper::wrap(facebook::jsi::Runtime&, facebook::jsi::Value const&, RNWorklet::JsiWrapper*, bool)) >>> referenced 37 more times ld.lld: error: undefined symbol: operator delete(void*) >>> referenced by shared_ptr.h:246 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__memory/shared_ptr.h:246) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::RuntimeLifecycleMonitorObject, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleMonitorObject>>::~__shared_ptr_emplace()) >>> referenced by WKTRuntimeLifecycleMonitor.cpp:16 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp:16) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(RNWorklet::RuntimeLifecycleMonitorObject::~RuntimeLifecycleMonitorObject()) >>> referenced by WKTJsiHostObject.cpp:22 (/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp:22) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTJsiHostObject.cpp.o:(RNWorklet::JsiHostObject::~JsiHostObject()) >>> referenced 89 more times ld.lld: error: undefined symbol: __cxa_guard_acquire >>> referenced by Hybrid.h:336 (/Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/include/fbjni/detail/Hybrid.h:336) >>> CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o:(facebook::jni::HybridClass<facebook::react::CallInvokerHolder, facebook::jni::detail::BaseHybridClass>::JavaPart::cthis() const) >>> referenced by WKTJsiPromiseWrapper.h:96 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.h:96) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::getExportedFunctionMap()) >>> referenced by CoreClasses-inl.h:683 (/Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/include/fbjni/detail/CoreClasses-inl.h:683) >>> CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o:(facebook::jni::JavaClass<facebook::jni::HybridClass<facebook::react::CallInvokerHolder, facebook::jni::detail::BaseHybridClass>::JavaPart, facebook::jni::JObject, void>::javaClassStatic()) >>> referenced 21 more times ld.lld: error: undefined symbol: __cxa_guard_release >>> referenced by Hybrid.h:336 (/Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/include/fbjni/detail/Hybrid.h:336) >>> CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o:(facebook::jni::HybridClass<facebook::react::CallInvokerHolder, facebook::jni::detail::BaseHybridClass>::JavaPart::cthis() const) >>> referenced by WKTJsiPromiseWrapper.h:96 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.h:96) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::getExportedFunctionMap()) >>> referenced by WKTJsiWorkletContext.h:180 (/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.h:180) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp.o:(RNWorklet::JsiWorkletContext::getExportedFunctionMap()) >>> referenced 21 more times ld.lld: error: undefined symbol: __cxa_guard_abort >>> referenced by Hybrid.h:336 (/Users/dsccmac/.gradle/caches/8.12/transforms/bbbd7faada6db350ac59925f93ab342e/transformed/fbjni-0.7.0/prefab/modules/fbjni/include/fbjni/detail/Hybrid.h:336) >>> CMakeFiles/rnworklets.dir/cpp-adapter.cpp.o:(facebook::jni::HybridClass<facebook::react::CallInvokerHolder, facebook::jni::detail::BaseHybridClass>::JavaPart::cthis() const) >>> referenced by WKTJsiPromiseWrapper.h:96 (/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.h:96) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiPromiseWrapper::getExportedFunctionMap()) >>> referenced by WKTJsiWorkletContext.h:180 (/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.h:180) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/WKTJsiWorkletContext.cpp.o:(RNWorklet::JsiWorkletContext::getExportedFunctionMap()) >>> referenced 18 more times ld.lld: error: undefined symbol: std::__ndk1::recursive_mutex::lock() >>> referenced by unique_lock.h:41 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__mutex/unique_lock.h:41) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(std::__ndk1::unique_lock<std::__ndk1::recursive_mutex>::unique_lock[abi:ne180000](std::__ndk1::recursive_mutex&)) ld.lld: error: undefined symbol: std::__ndk1::recursive_mutex::unlock() >>> referenced by unique_lock.h:63 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__mutex/unique_lock.h:63) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiWrapper.cpp.o:(std::__ndk1::unique_lock<std::__ndk1::recursive_mutex>::~unique_lock[abi:ne180000]()) ld.lld: error: undefined symbol: std::__ndk1::__next_prime(unsigned long) >>> referenced by __hash_table:1657 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1657) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(void std::__ndk1::__hash_table<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>::__rehash<true>(unsigned long)) >>> referenced by __hash_table:1665 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1665) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(void std::__ndk1::__hash_table<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>::__rehash<true>(unsigned long)) >>> referenced by __hash_table:1657 (/Users/dsccmac/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include/c++/v1/__hash_table:1657) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/base/WKTRuntimeLifecycleMonitor.cpp.o:(void std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<facebook::jsi::Runtime*, std::__ndk1::unordered_set<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>>, std::__ndk1::__unordered_map_hasher<facebook::jsi::Runtime*, std::__ndk1::__hash_value_type<facebook::jsi::Runtime*, std::__ndk1::unordered_set<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>>, std::__ndk1::hash<facebook::jsi::Runtime*>, std::__ndk1::equal_to<facebook::jsi::Runtime*>, true>, std::__ndk1::__unordered_map_equal<facebook::jsi::Runtime*, std::__ndk1::__hash_value_type<facebook::jsi::Runtime*, std::__ndk1::unordered_set<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>>, std::__ndk1::equal_to<facebook::jsi::Runtime*>, std::__ndk1::hash<facebook::jsi::Runtime*>, true>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<facebook::jsi::Runtime*, std::__ndk1::unordered_set<RNWorklet::RuntimeLifecycleListener*, std::__ndk1::hash<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::equal_to<RNWorklet::RuntimeLifecycleListener*>, std::__ndk1::allocator<RNWorklet::RuntimeLifecycleListener*>>>>>::__rehash<true>(unsigned long)) >>> referenced 11 more times ld.lld: error: undefined symbol: std::__ndk1::recursive_mutex::~recursive_mutex() >>> referenced by WKTJsiWrapper.h:30 (/Users/r/example/node_modules/react-native-worklets-core/android/../cpp/wrappers/WKTJsiWrapper.h:30) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiPromiseWrapper.cpp.o:(RNWorklet::JsiWrapper::~JsiWrapper()) ld.lld: error: undefined symbol: std::__ndk1::condition_variable::notify_all() >>> referenced by WKTDispatchQueue.cpp:12 (/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp:12) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp.o:(RNWorklet::DispatchQueue::~DispatchQueue()) ld.lld: error: undefined symbol: std::__ndk1::thread::join() >>> referenced by WKTDispatchQueue.cpp:16 (/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp:16) >>> CMakeFiles/rnworklets.dir/Users/r/example/node_modules/react-native-worklets-core/cpp/dispatch/WKTDispatchQueue.cpp.o:(RNWorklet::DispatchQueue::~DispatchQueue()) ld.lld: error: too many errors emitted, stopping now (use --error-limit=0 to see all errors) clang++: error: linker command failed with exit code 1 (use -v to see invocation) ninja: build stopped: subcommand failed. C++ build system [build] failed while executing: /Users/dsccmac/Library/Android/sdk/cmake/3.22.1/bin/ninja \ -C \ /Users/r/example/node_modules/react-native-worklets-core/android/.cxx/Debug/625a6672/x86_64 \ rnworklets from /Users/r/example/node_modules/react-native-worklets-core/android * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 36s. info Run CLI with --verbose flag for more details. 什么原因
09-09
<think> 我们正在处理一个Gradle构建失败的问题,错误信息包括"No modules to process in combine-js-to-schema-cli"和大量的"ld.lld: error: undefined symbol"链接错误。 结合React Native项目背景,分析如下: 1. "No modules to process in combine-js-to-schema-cli": - 这个错误通常发生在React Native的Codegen(代码生成)阶段。combine-js-to-schema-cli是一个用于生成Fabric组件和TurboModule的架构代码(schema)的工具。 - 可能的原因: a) 项目中没有定义任何需要Codegen处理的模块(即没有符合要求的Native模块或组件)。但如果是现有项目,之前能正常运行,这个可能性较低。 b) Codegen的配置问题,比如没有正确指定需要生成代码的模块,或者路径配置错误。 c) 可能是由于Gradle缓存或node_modules的问题导致脚本执行异常。 2. 大量的"ld.lld: error: undefined symbol"链接错误: - 这些是编译后的原生代码(C++)在链接阶段出现的错误,意味着编译器找不到某些函数或变量的定义。 - 在React Native项目中,这通常与原生模块有关,尤其是新添加的原生模块或修改了原生代码后。 - 可能的原因: a) 原生模块的C++头文件(.h)和实现文件(.cpp)没有正确配对,或者实现文件中没有实现头文件中声明的函数。 b) 在Android.mk或CMakeLists.txt(NDK构建脚本)中没有正确包含所有源文件,或者链接库时遗漏了某些库。 c) 由于Codegen步骤失败(如上一步的错误),导致生成的原生代码缺失,从而引发链接错误。 结合两个错误,我们推测:Codegen步骤的失败(没有生成预期的代码)导致后续链接时缺少这些生成的符号,因此出现大量的未定义符号错误。 解决思路: 1. 确保Codegen配置正确: - 检查项目中是否有使用`codegenConfig`的模块(通常是在package.json中配置,或者在React Native库中通过`codegenConfig`字段指定)。 - 检查`android/app/build.gradle`中的Codegen配置,确保指定了正确的生成路径和模块。 2. 清理项目并重新构建: - 清除Gradle缓存:`./gradlew clean` - 清除node_modules:`rm -rf node_modules && npm install` 或 `yarn install` - 清除Metro bundler缓存:`npm start -- --reset-cache` - 清除Android构建目录:手动删除`android/app/build`目录 3. 检查原生模块的实现: - 如果最近添加了新的原生模块,请确保其头文件(.h)和实现文件(.cpp)都正确实现,并且导出符号的方式符合要求(使用`extern "C"`和`__attribute__((visibility("default")))`或类似的宏)。 - 检查CMakeLists.txt或Android.mk,确保包含了所有必要的源文件(包括Codegen生成的代码)。 4. 检查React Native版本和依赖兼容性: - 确保所有第三方库的版本与React Native版本兼容。特别是使用Fabric(新架构)时,需要确保库支持新架构。 5. 尝试连接Metro服务器: - 错误信息中指定了`-PreactNativeDevServerPort=8081`,确保Metro服务器正在该端口运行(可以使用`npm start`启动)。 6. 查看详细日志: - 运行命令时添加`--info`或`--debug`标志以获取更详细的日志:`./gradlew app:installDebug -PreactNativeDevServerPort=8081 --info` 注意:Codegen在React Native 0.68及以上版本中默认启用(新架构需要)。如果项目尚未启用新架构,可能不需要Codegen步骤,但错误提示表明它正在运行,所以可能是配置问题。 由于错误信息中提到“No modules to process”,可能是由于没有配置任何需要Codegen的模块。在旧架构中,可以尝试禁用Codegen(如果不需要): 在`android/gradle.properties`中设置: ``` newArchEnabled=false ``` 但是,如果项目正在迁移到新架构,那么必须解决Codegen问题。 因此,建议先尝试清理构建,并检查Codegen配置。如果问题依旧,需要查看具体的链接错误,定位是哪个模块的符号未定义,然后检查该模块的原生代码实现。 生成相关问题: 1. 如何正确配置React Native的新架构(Fabric)? 2. 在React Native中如何创建和使用TurboModule? 3. 如何解决Android原生代码链接错误? </think> 根据错误信息分析,安装失败主要涉及两个核心问题: ### 一、`No modules to process in combine-js-to-schema-cli` 错误原因 1. **Codegen 配置问题** React Native 的 Codegen 工具(`combine-js-to-schema-cli`)未能检测到需要处理的模块。常见原因: - TurboModule 或 Fabric 组件未正确定义 - `codegenConfig` 缺失或路径错误(检查 `package.json` 中的 `codegenConfig` 字段) - React Native 版本升级导致配置变更(常见于 0.68+ 版本的新架构) 2. **Node.js 依赖问题** 需检查: ```bash npm list react-native-codegen # 确认版本兼容性 rm -rf node_modules && npm install # 重新安装依赖 ``` 3. **启动 Metro 服务失败** 命令中指定的开发服务器端口 `8081` 可能被占用或 Metro 未启动: ```bash lsof -i :8081 # 检查端口占用 npm start -- --port 8081 # 手动启动Metro ``` ### 二、`ld.lld: error: undefined symbol` 链接错误 这是**原生代码编译阶段的符号缺失**问题,通常由以下原因导致: 1. **原生模块未正确链接** - C++ TurboModule 头文件(`.h`)与实现文件(`.cpp`)不匹配 - `Android.mk`/`CMakeLists.txt` 未包含所有源文件 - 第三方原生库依赖未同步(如 `react-native-reanimated` 等) 2. **架构配置冲突** 混合使用新旧架构组件时需检查: ```gradle // android/gradle.properties newArchEnabled=true # 确保新旧架构配置统一 ``` 3. **NDK 版本兼容性** 在 `android/app/build.gradle` 中指定 NDK 版本: ```gradle android { ndkVersion "23.1.7779620" /* 推荐使用RN兼容版本 */ } ``` --- ### 排查步骤 1. **清理构建缓存** ```bash cd android && ./gradlew clean # 清理Gradle缓存 watchman watch-del-all # 清除文件监听 ``` 2. **验证 Codegen 配置** 在 `package.json` 确认包含: ```json "codegenConfig": { "name": "AppSpec", "type": "all", "jsSrcsDir": "src", "android": { "javaPackageName": "com.example" } } ``` 3. **检查原生符号定义** 从 `ld.lld` 错误中提取未定义符号(如 `Java_com_example_Module_foo`),检查: - JNI 方法名是否匹配 `Java_包名_类名_方法名` 规范 - C++ 文件是否实现头文件声明的所有方法 4. **启用详细日志** ```bash ./gradlew app:installDebug -PreactNativeDevServerPort=8081 --info --scan ``` --- ### 可能的解决方案 ```mermaid graph TD A[安装失败] --> B{错误类型} B --> C[No modules to process] B --> D[Undefined symbol] C --> E[检查codegenConfig] C --> F[启动Metro服务] D --> G[验证NDK版本] D --> H[检查JNI方法签名] ```
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值