I just set up a brand new react-native project (0.62). Running a fresh debug build works just fine.
I set up signing following the documentation: https://reactnative.dev/docs/signed-apk-android, and ensured that I'm using the following ABIs: "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
.
To test out a release build, I run the following: npx react-native run-android --variant release
Problem
After running the above command, the app attempts to start and crashes immediately with the following stack trace:
--------- beginning of crash2020-05-01 09:34:26.707 19961-19976/? E/AndroidRuntime: FATAL EXCEPTION: create_react_context Process: <BUNDLE_ID>, PID: 19961 java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:789) at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577) at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:525)
Sure enough, when I unpackage the APK there is no libhermes.so in /lib/x86_64
(I am testing at the moment on pixel 2 API 28).
I'm not sure why hermes wasn't enabled to start out with, but just to be sure I set the following in my build.grade:
project.ext.react = [ enableHermes: true, // clean and rebuild if changing]
Now after cleaning and building I do see libhermes.so
. Unfortunately, I am still seeing the same exact issue. But I can see that the file exists.
At this point, I'm pretty stuck. I've followed a number of threads reporting the same issue (for example, this). It sounds like an underlying issue with soloader has been fixed and is being used with the latest version of react native.
Question
Not being terribly familiar with Android development, what steps might I take to investigate this issue further?