[FIX] fix(android): load inspector libraries on initialization #1213
+22
−0
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 theInspectorNetworkRequestListenerJNI stubs.Re.Pack initialises its
ScriptManagerModulebefore RN has loaded the library.Fix
Call
SoLoader.loadLibrary("reactnativejni")once duringScriptManagerModuleinitialisation, guarded byBuildConfig.DEBUGso itruns only in debug builds.
Implementation details
ensureInspectorLoaded()inScriptManagerModule.@Volatileflag to ensure the load happens exactly once.Test plan
Preconditions
Steps
jin the terminal to open the JS debugger.Expected
Before this fix
UnsatisfiedLinkError.Changelog
libreactnativejni.so.Checklist