Description
npx expo run:android --device fails while building @use-voltra/android-client@2.1.1 in an Expo / React Native app.
The failing task is :use-voltra_android-client:buildCMakeDebug[armeabi-v7a]. The linker cannot resolve JSI/Hermes symbols while linking libvoltra_js_renderer.so.
This looks ABI-related: the generated CMake/Ninja files link libjsi.so and libhermesvm.so for arm64-v8a, but the generated armeabi-v7a link command only links fbjni and omits both JSI and Hermes libraries.
Environment
@use-voltra/android-client: 2.1.1
expo: 57.0.2
react-native: 0.86.0
@sentry/react-native: 8.16.0
- New Architecture:
newArchEnabled=true
- Hermes:
hermesEnabled=true
- Android compileSdk / targetSdk:
36
- Android minSdk:
24
- Gradle:
9.3.1
- Java:
17.0.19
- Host OS: macOS
26.5.1, aarch64
- CMake:
3.22.1
- NDK seen in linker invocation:
27.0.12077973
Android config:
reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
newArchEnabled=true
hermesEnabled=true
The Expo/Gradle command printed at the end includes -PreactNativeArchitectures=arm64-v8a, but Voltra still attempts to build :use-voltra_android-client:buildCMakeDebug[armeabi-v7a].
Reproduction
- Use an Expo 57 / React Native 0.86 app with Hermes and the New Architecture enabled.
- Install/configure
@use-voltra/android-client@2.1.1.
- Run:
npx expo run:android --device
Expected behavior
The Android debug build should succeed for the target ABI, or Voltra should avoid building ABIs where the required React Native / Hermes prefab libraries are unavailable.
Actual behavior
The build fails while linking libvoltra_js_renderer.so for armeabi-v7a:
> Task :use-voltra_android-client:buildCMakeDebug[armeabi-v7a] FAILED
C/C++: ld.lld: error: undefined symbol: facebook::jsi::Value::~Value()
C/C++: >>> referenced by voltra_js_renderer.cpp:89
C/C++: >>> referenced by voltra_js_renderer.cpp:114
C/C++: ld.lld: error: undefined symbol: facebook::jsi::Value::asObject(facebook::jsi::IRuntime&) const &
C/C++: >>> referenced by voltra_js_renderer.cpp:98
C/C++: ld.lld: error: undefined symbol: typeinfo for facebook::jsi::JSError
C/C++: ld.lld: error: undefined symbol: facebook::hermes::makeHermesRuntime(hermes::vm::RuntimeConfig const&)
C/C++: >>> referenced by voltra_js_renderer.cpp:50
C/C++: ld.lld: error: undefined symbol: facebook::jsi::Object::asFunction(facebook::jsi::IRuntime&) &&
C/C++: >>> referenced by voltra_js_renderer.cpp:162
C/C++: ld.lld: error: undefined symbol: facebook::jsi::Value::asString(facebook::jsi::IRuntime&) const &
C/C++: >>> referenced by voltra_js_renderer.cpp:174
C/C++: clang++: error: linker command failed with exit code 1
Additional local evidence
@use-voltra/android-client/android/CMakeLists.txt links these targets:
target_link_libraries(voltra_js_renderer
android
log
ReactAndroid::jsi
hermes-engine::hermesvm
fbjni::fbjni
)
For arm64-v8a, the generated build.ninja contains:
LINK_LIBRARIES = -landroid -llog .../libjsi.so .../libhermesvm.so .../libfbjni.so -latomic -lm
For armeabi-v7a, the generated build.ninja contains only:
LINK_LIBRARIES = -landroid -llog .../libfbjni.so -latomic -lm
That matches the unresolved JSI/Hermes symbols.
I searched existing issues for voltra_js_renderer, facebook::jsi, armeabi-v7a, and hermesvm, but did not find an existing report for this build failure.
Description
npx expo run:android --devicefails while building@use-voltra/android-client@2.1.1in an Expo / React Native app.The failing task is
:use-voltra_android-client:buildCMakeDebug[armeabi-v7a]. The linker cannot resolve JSI/Hermes symbols while linkinglibvoltra_js_renderer.so.This looks ABI-related: the generated CMake/Ninja files link
libjsi.soandlibhermesvm.soforarm64-v8a, but the generatedarmeabi-v7alink command only linksfbjniand omits both JSI and Hermes libraries.Environment
@use-voltra/android-client:2.1.1expo:57.0.2react-native:0.86.0@sentry/react-native:8.16.0newArchEnabled=truehermesEnabled=true36249.3.117.0.1926.5.1,aarch643.22.127.0.12077973Android config:
The Expo/Gradle command printed at the end includes
-PreactNativeArchitectures=arm64-v8a, but Voltra still attempts to build:use-voltra_android-client:buildCMakeDebug[armeabi-v7a].Reproduction
@use-voltra/android-client@2.1.1.Expected behavior
The Android debug build should succeed for the target ABI, or Voltra should avoid building ABIs where the required React Native / Hermes prefab libraries are unavailable.
Actual behavior
The build fails while linking
libvoltra_js_renderer.soforarmeabi-v7a:Additional local evidence
@use-voltra/android-client/android/CMakeLists.txtlinks these targets:For
arm64-v8a, the generatedbuild.ninjacontains:For
armeabi-v7a, the generatedbuild.ninjacontains only:That matches the unresolved JSI/Hermes symbols.
I searched existing issues for
voltra_js_renderer,facebook::jsi,armeabi-v7a, andhermesvm, but did not find an existing report for this build failure.