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") }