[FIX] fix(android): load inspector libraries on initialization #1213
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🔧 Fix Android UnsatisfiedLinkError for DevTools on RN 0.80+
Summary
Problem
Opening the DevTools network-inspector on Android crashes with
UnsatisfiedLinkError: ...InspectorNetworkRequestListener.onHeaders(...)
when the app is built with React Native 0.80 or later.
Root cause
RN 0.80 stopped pre-loading
libreactnativejni.so
, which contains theInspectorNetworkRequestListener
JNI stubs.Re.Pack initialises its
ScriptManagerModule
before RN has loaded the library.Fix
Call
SoLoader.loadLibrary("reactnativejni")
once duringScriptManagerModule
initialisation, guarded byBuildConfig.DEBUG
so itruns only in debug builds.
Implementation details
ensureInspectorLoaded()
inScriptManagerModule
.@Volatile
flag to ensure the load happens exactly once.Test plan
Preconditions
Steps
j
in the terminal to open the JS debugger.Expected
Before this fix
UnsatisfiedLinkError
.Changelog
libreactnativejni.so
.Checklist