Noltibus
Noltibus

Reputation: 1360

UnsatisfiedLinkError libreactnativejni.so App Bundle

I currently distribute an app over the Play Store. I use Android App Bundles for better download experience. Besides other libraries, I use react-native. Now I get multiple reportings from different users, that the app won't start. Looking into the error logs I received the error message looks like this:

Fatal Exception: java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libreactnativejni.so
       at com.facebook.soloader.SoLoader.doLoadLibraryBySoName + 738(SoLoader.java:738)
       at com.facebook.soloader.SoLoader.loadLibraryBySoName + 591(SoLoader.java:591)
       at com.facebook.soloader.SoLoader.loadLibrary + 529(SoLoader.java:529)
       at com.facebook.soloader.SoLoader.loadLibrary + 484(SoLoader.java:484)
       at com.facebook.react.bridge.ReactBridge.staticInit + 31(ReactBridge.java:31)
       at com.facebook.react.bridge.NativeMap.<clinit> + 19(NativeMap.java:19)
       at com.facebook.react.jscexecutor.JSCExecutorFactory.create + 25(JSCExecutorFactory.java:25)
       at com.facebook.react.ReactInstanceManager$5.run + 944(ReactInstanceManager.java:944)
       at java.lang.Thread.run + 776(Thread.java:776)

The configuration in my build.gradle looks like this:

ndk.abiFilters 'armeabi-v7a','arm64-v8a'

and if I unpack my app bundle, there is a lib folder containing an armeabi-v7a folder as well as an arm64-v8a folder. Inside those folder all the necessary library files are present, including libreactnativejni.so But there is one detail in all the error reports. My app uses ArCore and is therefore only compatible with specific devices. All the crashes I received come form devices, which don't support ArCore naturally, which means, that those devices are rooted but still downloaded the app from the Play Store. Do Android App Bundles not work with rooted devices or is there any other error I'm making?

Upvotes: 2

Views: 931

Answers (1)

Bali
Bali

Reputation: 759

If you're using App bundles you don't need to specify ndk.abiFilters, So remove it. Just add this in app level build.gradle file

bundle {
  abi {
     enableSplit = true
  }

}

Secondly you need React Native version higher than 59 to support App bundles.

Upvotes: 1

Related Questions