From d8bd58189a62e0ab562b56777c65d4519f2a4433 Mon Sep 17 00:00:00 2001 From: Raghvendra Singh Date: Mon, 7 Jul 2025 23:53:37 +0530 Subject: [PATCH] fix: ensure SoLoader library is loaded in debug mode --- .changeset/warm-tips-marry.md | 7 +++++++ .../com/callstack/repack/ScriptManagerModule.kt | 15 +++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 .changeset/warm-tips-marry.md diff --git a/.changeset/warm-tips-marry.md b/.changeset/warm-tips-marry.md new file mode 100644 index 000000000..4ee91b9f4 --- /dev/null +++ b/.changeset/warm-tips-marry.md @@ -0,0 +1,7 @@ +--- +"@callstack/repack": patch +--- + +fix(android): load inspector libraries on initialization + +Fixes `UnsatisfiedLinkError` on React Native 0.80 and above by loading inspector libraries when `ScriptManagerModule` is initialized. diff --git a/packages/repack/android/src/main/java/com/callstack/repack/ScriptManagerModule.kt b/packages/repack/android/src/main/java/com/callstack/repack/ScriptManagerModule.kt index ab103a7d1..37e6e70c6 100644 --- a/packages/repack/android/src/main/java/com/callstack/repack/ScriptManagerModule.kt +++ b/packages/repack/android/src/main/java/com/callstack/repack/ScriptManagerModule.kt @@ -2,12 +2,16 @@ package com.callstack.repack import android.os.Handler import com.facebook.react.bridge.* +import com.facebook.soloader.SoLoader class ScriptManagerModule(reactContext: ReactApplicationContext) : ScriptManagerSpec(reactContext) { private val nativeLoader = NativeScriptLoader(reactApplicationContext) private val remoteLoader = RemoteScriptLoader(reactApplicationContext, nativeLoader) private val fileSystemLoader = FileSystemScriptLoader(reactApplicationContext, nativeLoader) + init { + ensureInspectorLoaded() + } override fun getName(): String { return NAME } @@ -106,6 +110,17 @@ class ScriptManagerModule(reactContext: ReactApplicationContext) : ScriptManager } companion object { + @Volatile + private var inspectorLoaded = false + + @Synchronized + private fun ensureInspectorLoaded() { + if (BuildConfig.DEBUG && !inspectorLoaded) { + SoLoader.loadLibrary("reactnativejni") + inspectorLoaded = true + } + } + init { System.loadLibrary("callstack-repack") }