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 crash
2020-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. Although I'm using the latest version of RN, I'm still seeing this issue.
Question
Not being terribly familiar with Android development, what steps might I take to investigate this issue further?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…