react-native-vision-camera: V3.0.0-rc.4 RN 0.72.3 android Execution failed for task ':react-native-vision-camera:buildCMakeDebug[arm64-v8a]'.🐛🐛

What were you trying to do?

Trying to upgrade from react-native-vision-camera v2 to v3

Installed version 3-RC4: yarn add react-native-vision-camera@3.0.0-rc.4 react-native-worklets@https://github.com/chrfalch/react-native-worklets#3ac2fbb @shopify/react-native-skia

Reproduceable Code

yarn react-native run-android

What happened instead?

ld: error: undefined symbol: RNWorklet::JsiWorkletContext::getWorkletRuntime()

Relevant log output

* What went wrong:
Execution failed for task ':react-native-vision-camera:buildCMakeDebug[arm64-v8a]'.
> com.android.ide.common.process.ProcessException: ninja: Entering directory `D:\Developer\Projects\mCOPS\node_modules\react-native-vision-camera\android\.cxx\Debug\4g2w03f2\arm64-v8a'
  [1/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrame.cpp.o
  [2/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JHashMap.cpp.o
  [3/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/FrameHostObject.cpp.o
  [4/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCamera.cpp.o
  [5/13] Building CXX object CMakeFiles/VisionCamera.dir/D_/Developer/Projects/mCOPS/node_modules/react-native-vision-camera/cpp/JSITypedArray.cpp.o
  [6/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/FrameProcessorPluginHostObject.cpp.o
  [7/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o
  [8/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/JSIJNIConversion.cpp.o
  [9/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o
  [10/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JVisionCameraScheduler.cpp.o
  [11/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessorPlugin.cpp.o
  [12/13] Building CXX object CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JVisionCameraProxy.cpp.o
  [13/13] Linking CXX shared library ..\..\..\..\build\intermediates\cxx\Debug\4g2w03f2\obj\arm64-v8a\libVisionCamera.so
  FAILED: ../../../../build/intermediates/cxx/Debug/4g2w03f2/obj/arm64-v8a/libVisionCamera.so
  cmd.exe /C "cd . && C:\Users\n1122168\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android21 --sysroot=C:/Users/n1122168/AppData/Local/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -O2 -frtti -fexceptions -Wall -Wno-unused-variable -fstack-protector-all -g  -fno-limit-debug-info  -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Qunused-arguments -Wl,--no-undefined -shared -Wl,-soname,libVisionCamera.so -o ..\..\..\..\build\intermediates\cxx\Debug\4g2w03f2\obj\arm64-v8a\libVisionCamera.so CMakeFiles/VisionCamera.dir/D_/Developer/Projects/mCOPS/node_modules/react-native-vision-camera/cpp/JSITypedArray.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/FrameHostObject.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/FrameProcessorPluginHostObject.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/JSIJNIConversion.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCamera.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrame.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessorPlugin.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JHashMap.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JVisionCameraProxy.cpp.o CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JVisionCameraScheduler.cpp.o  C:/Users/n1122168/AppData/Local/Android/Sdk/ndk/23.1.7779620/toolchains/llvm/prebuilt/windows-x86_64/sysroot/usr/lib/aarch64-linux-android/21/liblog.so  -landroid  C:/Users/n1122168/.gradle/caches/transforms-3/ef7b7082a4fed21bc2a02e3c84543346/transformed/jetified-react-android-0.72.3-debug/prefab/modules/jsi/libs/android.arm64-v8a/libjsi.so  C:/Users/n1122168/.gradle/caches/transforms-3/ef7b7082a4fed21bc2a02e3c84543346/transformed/jetified-react-android-0.72.3-debug/prefab/modules/reactnativejni/libs/android.arm64-v8a/libreactnativejni.so  C:/Users/n1122168/.gradle/caches/transforms-3/ef7b7082a4fed21bc2a02e3c84543346/transformed/jetified-react-android-0.72.3-debug/prefab/modules/folly_runtime/libs/android.arm64-v8a/libfolly_runtime.so  C:/Users/n1122168/.gradle/caches/transforms-3/68b86d627830190409a9d6f726c1e685/transformed/jetified-fbjni-0.3.0/prefab/modules/fbjni/libs/android.arm64-v8a/libfbjni.so   -latomic -lm && cd ."
  ld: error: undefined symbol: RNWorklet::JsiWorkletContext::getWorkletRuntime()
  >>> referenced by VisionCameraProxy.cpp:35 (D:/Developer/Projects/mCOPS/node_modules/react-native-vision-camera/android/src/main/cpp\VisionCameraProxy.cpp:35)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(vision::VisionCameraProxy::~VisionCameraProxy())
  >>> referenced by JFrameProcessor.cpp:39 (D:/Developer/Projects/mCOPS/node_modules/react-native-vision-camera/android/src/main/cpp/java-bindings\JFrameProcessor.cpp:39)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(vision::JFrameProcessor::callWithFrameHostObject(std::__ndk1::shared_ptr<vision::FrameHostObject> const&) const)

  ld: error: undefined symbol: RNWorklet::JsiHostObject::JsiHostObject()
  >>> referenced by WKTJsiWorklet.h:77 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWorklet.h:77)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(RNWorklet::JsiWorklet::JsiWorklet(facebook::jsi::Runtime&, facebook::jsi::Value const&))
  >>> referenced by WKTJsiWorkletContext.h:31 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWorkletContext.h:31)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::JsiWorkletContext::getDefaultInstance())

  ld: error: undefined symbol: RNWorklet::JsiHostObject::~JsiHostObject()
  >>> referenced by WKTJsiWorklet.h:79 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWorklet.h:79)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(RNWorklet::JsiWorklet::JsiWorklet(facebook::jsi::Runtime&, facebook::jsi::Value const&))
  >>> referenced by WKTJsiWorklet.h:74 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWorklet.h:74)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(RNWorklet::JsiWorklet::~JsiWorklet())

  ld: error: undefined symbol: RNWorklet::JsiWrapper::wrap(facebook::jsi::Runtime&, facebook::jsi::Value const&, RNWorklet::JsiWrapper*)
  >>> referenced by WKTJsiWrapper.h:62 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWrapper.h:62)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(RNWorklet::JsiWorklet::createWorklet(facebook::jsi::Runtime&, std::__ndk1::shared_ptr<facebook::jsi::Function>))

  ld: error: undefined symbol: RNWorklet::JsiHostObject::get(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&)
  >>> referenced by VisionCameraProxy.cpp
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(vtable for RNWorklet::JsiWorklet)

  ld: error: undefined symbol: RNWorklet::JsiHostObject::set(facebook::jsi::Runtime&, facebook::jsi::PropNameID const&, facebook::jsi::Value const&)
  >>> referenced by VisionCameraProxy.cpp
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(vtable for RNWorklet::JsiWorklet)

  ld: error: undefined symbol: RNWorklet::JsiHostObject::getPropertyNames(facebook::jsi::Runtime&)
  >>> referenced by VisionCameraProxy.cpp
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(vtable for RNWorklet::JsiWorklet)

  ld: error: undefined symbol: typeinfo for RNWorklet::JsiHostObject
  >>> referenced by VisionCameraProxy.cpp
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/VisionCameraProxy.cpp.o:(typeinfo for RNWorklet::JsiWorklet)

  ld: error: undefined symbol: RNWorklet::JsiWorkletContext::invokeOnJsThread(std::__ndk1::function<void (facebook::jsi::Runtime&)>&&)
  >>> referenced by JFrameProcessor.cpp:52 (D:/Developer/Projects/mCOPS/node_modules/react-native-vision-camera/android/src/main/cpp/java-bindings\JFrameProcessor.cpp:52)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(vision::JFrameProcessor::callWithFrameHostObject(std::__ndk1::shared_ptr<vision::FrameHostObject> const&) const)
  >>> referenced by WKTJsiWorklet.h:358 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWorklet.h:358)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::WorkletInvoker::~WorkletInvoker())

  ld: error: undefined symbol: RNWorklet::JsiWorkletContext::runtimeMappings
  >>> referenced by __tree:0 (C:/Users\n1122168\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\__tree:0)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::WorkletInvoker::call(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long))
  >>> referenced by __tree:0 (C:/Users\n1122168\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\__tree:0)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::WorkletInvoker::call(facebook::jsi::Runtime&, facebook::jsi::Value const&, facebook::jsi::Value const*, unsigned long))

  ld: error: undefined symbol: RNWorklet::JsiWorkletContext::invokeOnWorkletThread(std::__ndk1::function<void (RNWorklet::JsiWorkletContext*, facebook::jsi::Runtime&)>&&)
  >>> referenced by WKTJsiWorklet.h:361 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWorklet.h:361)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::WorkletInvoker::~WorkletInvoker())

  ld: error: undefined symbol: RNWorklet::JsiWorkletContext::defaultInstance
  >>> referenced by memory:3887 (C:/Users\n1122168\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\memory:3887)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::JsiWorkletContext::getDefaultInstance())
  >>> referenced by memory:3887 (C:/Users\n1122168\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\memory:3887)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::JsiWorkletContext::getDefaultInstance())

  ld: error: undefined symbol: vtable for RNWorklet::JsiWorkletContext
  >>> referenced by WKTJsiWorkletContext.h:31 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWorkletContext.h:31)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::JsiWorkletContext::getDefaultInstance())
  >>> referenced by WKTJsiWorkletContext.h:31 (D:/Developer/Projects/mCOPS/node_modules/react-native-worklets/android/build/headers/rnworklets\react-native-worklets\WKTJsiWorkletContext.h:31)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(RNWorklet::JsiWorkletContext::getDefaultInstance())
  >>> the vtable symbol may be undefined because the class is missing its key function (see https://lld.llvm.org/missingkeyfunction)

  ld: error: undefined symbol: RNWorklet::JsiWorkletContext::~JsiWorkletContext()
  >>> referenced by memory:2252 (C:/Users\n1122168\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\memory:2252)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::JsiWorkletContext, std::__ndk1::allocator<RNWorklet::JsiWorkletContext> >::~__shared_ptr_emplace())
  >>> referenced by memory:2252 (C:/Users\n1122168\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\memory:2252)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JFrameProcessor.cpp.o:(std::__ndk1::__shared_ptr_emplace<RNWorklet::JsiWorkletContext, std::__ndk1::allocator<RNWorklet::JsiWorkletContext> >::~__shared_ptr_emplace())

  ld: error: undefined symbol: RNWorklet::JsiWorkletContext::JsiWorkletContext(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&, facebook::jsi::Runtime*, std::__ndk1::function<void (std::__ndk1::function<void ()>&&)>, std::__ndk1::function<void (std::__ndk1::function<void ()>&&)>)
  >>> referenced by memory:2278 (C:/Users\n1122168\AppData\Local\Android\Sdk\ndk\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\sysroot\usr\include\c++\v1\memory:2278)
  >>>               CMakeFiles/VisionCamera.dir/src/main/cpp/java-bindings/JVisionCameraProxy.cpp.o:(vision::JVisionCameraProxy::JVisionCameraProxy(facebook::jni::alias_ref<facebook::jni::detail::JTypeFor<facebook::jni::HybridClass<vision::JVisionCameraProxy, facebook::jni::detail::BaseHybridClass>::JavaPart, facebook::jni::JObject, void>::_javaobject*> const&, facebook::jsi::Runtime*, std::__ndk1::shared_ptr<facebook::react::CallInvoker> const&, facebook::jni::basic_strong_ref<facebook::jni::detail::JTypeFor<facebook::jni::HybridClass<vision::JVisionCameraScheduler, facebook::jni::detail::BaseHybridClass>::JavaPart, facebook::jni::JObject, void>::_javaobject*, facebook::jni::GlobalReferenceAllocator> const&))
  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:
      @echo off
      "C:\\Users\\n1122168\\AppData\\Local\\Android\\Sdk\\cmake\\3.22.1\\bin\\ninja.exe" ^
        -C ^
        "D:\\Developer\\Projects\\mCOPS\\node_modules\\react-native-vision-camera\\android\\.cxx\\Debug\\4g2w03f2\\arm64-v8a" ^
        VisionCamera
    from D:\Developer\Projects\mCOPS\node_modules\react-native-vision-camera\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

Device

Samsung Galaxy s20+

VisionCamera Version

3.0.0-rc.4

Additional information

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Reactions: 1
  • Comments: 15 (4 by maintainers)

Commits related to this issue

Most upvoted comments

I have also same issue. When can this issue resolved? I need to use this module in a week.

Had the same. Solved by deleting temp folders. I think it was \android\.gradle folder because I was not able to reproduce error any more.

@DeveloperMCD Did you install Reanimated to dependencies? Adding Reanimated to a clean project with only RNVC V3 installed caused this problem in my case. However, I couldn’t find the exact steps to reproduce it. Sometimes it occurred, sometimes it didn’t.

Hey! I’ve rewritten the entire Android codebase of VisionCamera from CameraX to Camera2 in the efforts of ✨ VisionCamera V3.

I just now completed the Camera2 rewrite and I believe the core structure is running, but there might be some edge cases to iron out. Can you try and test the PR #1674 for me to see if you can still reproduce this issue here?

Here’s an instruction on how you can test that: https://github.com/mrousavy/react-native-vision-camera/pull/1674#issuecomment-1684104217

If the issue cannot be reproduced with that version/PR anymore, then hoorayy, I fixed it! 🎉 Otherwise please let me know and I’ll keep this issue open to keep track of it.

Thank you!