From 02fe2f0e383c6dab3612b562a7d1bf11e02b674d Mon Sep 17 00:00:00 2001 From: almouro Date: Thu, 1 Feb 2024 06:42:27 -0800 Subject: [PATCH] Fix featureflags c++ library loading on Android (#42770) Summary: On latest `main`, RN Tester was crashing for me just after loading the JS bundle with `java.lang.UnsatisfiedLinkError: dlopen failed: library "libreactfeatureflagsjni.so" not found` It seems to be named `featureflagsjni` instead in [here](https://github.com/facebook/react-native/blob/main/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt#L11) ## Changelog: No changelog needed Pull Request resolved: https://github.com/facebook/react-native/pull/42770 Test Plan: ```bash ./gradlew :packages:rn-tester:android:app:installHermesDebug -PreactNativeArchitectures=arm64-v8a ``` Then run the app, the app was crashing before the fix, not crashing now Reviewed By: javache Differential Revision: D53268873 Pulled By: cortinico fbshipit-source-id: f098ca12baadab358f72b1c9d5720123248b8e1a --- packages/react-native/ReactAndroid/build.gradle.kts | 2 +- .../featureflags/ReactNativeFeatureFlagsCxxInterop.kt | 4 ++-- .../src/main/jni/react/featureflags/CMakeLists.txt | 10 +++++----- .../src/main/jni/react/newarchdefaults/CMakeLists.txt | 2 +- .../src/main/jni/react/runtime/jni/CMakeLists.txt | 2 +- .../ReactCommon/react/runtime/CMakeLists.txt | 2 +- .../ReactNativeFeatureFlagsCxxInterop.kt-template.js | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/react-native/ReactAndroid/build.gradle.kts b/packages/react-native/ReactAndroid/build.gradle.kts index 58ab6ad457a..7e0640a0e50 100644 --- a/packages/react-native/ReactAndroid/build.gradle.kts +++ b/packages/react-native/ReactAndroid/build.gradle.kts @@ -524,6 +524,7 @@ android { "react_render_debug", "turbomodulejsijni", "runtimeexecutor", + "react_featureflagsjni", "react_codegen_rncore", "react_debug", "react_featureflags", @@ -541,7 +542,6 @@ android { "jsi", "glog", "fabricjni", - "featureflagsjni", "react_render_mapbuffer", "yoga", "folly_runtime", diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt index 5c2b7f55c13..322f0c659f0 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/internal/featureflags/ReactNativeFeatureFlagsCxxInterop.kt @@ -4,7 +4,7 @@ * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * - * @generated SignedSource<<7b01e2f777839812437c60503ebe321b>> + * @generated SignedSource<<9638eb154fe6e488aebcf20c462f498e>> */ /** @@ -25,7 +25,7 @@ import com.facebook.soloader.SoLoader @DoNotStrip object ReactNativeFeatureFlagsCxxInterop { init { - SoLoader.loadLibrary("reactfeatureflagsjni") + SoLoader.loadLibrary("react_featureflagsjni") } @DoNotStrip @JvmStatic external fun commonTestFlag(): Boolean diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt index 859891bc984..91dec0d62c0 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/react/featureflags/CMakeLists.txt @@ -5,18 +5,18 @@ cmake_minimum_required(VERSION 3.13) -file(GLOB featureflagsjni_SRCS CONFIGURE_DEPENDS *.cpp) +file(GLOB react_featureflagsjni_SRCS CONFIGURE_DEPENDS *.cpp) add_library( - featureflagsjni + react_featureflagsjni SHARED ${featureflagsjni_SRCS} ) -target_include_directories(featureflagsjni PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(react_featureflagsjni PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries( - featureflagsjni + react_featureflagsjni fb fbjni react_featureflags @@ -24,7 +24,7 @@ target_link_libraries( ) target_compile_options( - featureflagsjni + react_featureflagsjni PRIVATE -DLOG_TAG=\"ReactNative\" -fexceptions diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/CMakeLists.txt index e2f42ccae19..3bbdeebb050 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/react/newarchdefaults/CMakeLists.txt @@ -17,7 +17,7 @@ target_include_directories(react_newarchdefaults PUBLIC .) target_link_libraries(react_newarchdefaults fbjni fabricjni - featureflagsjni + react_featureflagsjni react_nativemodule_core react_codegen_rncore react_cxxreactpackage diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt index 6073f255135..f61819764c0 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt +++ b/packages/react-native/ReactAndroid/src/main/jni/react/runtime/jni/CMakeLists.txt @@ -23,7 +23,7 @@ target_include_directories(rninstance PUBLIC .) target_link_libraries( rninstance fabricjni - featureflagsjni + react_featureflagsjni turbomodulejsijni fb jsi diff --git a/packages/react-native/ReactCommon/react/runtime/CMakeLists.txt b/packages/react-native/ReactCommon/react/runtime/CMakeLists.txt index 712f8c0cf85..dac7f39e6be 100644 --- a/packages/react-native/ReactCommon/react/runtime/CMakeLists.txt +++ b/packages/react-native/ReactCommon/react/runtime/CMakeLists.txt @@ -30,7 +30,7 @@ target_link_libraries( bridgeless jserrorhandler fabricjni - featureflagsjni + react_featureflagsjni turbomodulejsijni fb jsi diff --git a/packages/react-native/scripts/featureflags/templates/android/ReactNativeFeatureFlagsCxxInterop.kt-template.js b/packages/react-native/scripts/featureflags/templates/android/ReactNativeFeatureFlagsCxxInterop.kt-template.js index d88b5cf06af..813f010d212 100644 --- a/packages/react-native/scripts/featureflags/templates/android/ReactNativeFeatureFlagsCxxInterop.kt-template.js +++ b/packages/react-native/scripts/featureflags/templates/android/ReactNativeFeatureFlagsCxxInterop.kt-template.js @@ -35,7 +35,7 @@ import com.facebook.soloader.SoLoader @DoNotStrip object ReactNativeFeatureFlagsCxxInterop { init { - SoLoader.loadLibrary("reactfeatureflagsjni") + SoLoader.loadLibrary("react_featureflagsjni") } ${Object.entries(config.common)