Je viens de mettre à jour mon projet pour utiliser la version native de react 0.60.2 . Mais lorsque j'essaie d'exécuter une application sur un appareil Android, elle se bloque après l'écran de lancement. J'ai les journaux d'erreurs suivants:
E/AndroidRuntime: FATAL EXCEPTION: create_react_context
Process: com.tjspeed, PID: 3909
Java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.Java:738)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.Java:591)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.Java:529)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.Java:484)
at com.facebook.hermes.reactexecutor.HermesExecutor.<clinit>(HermesExecutor.Java:20)
at com.facebook.hermes.reactexecutor.HermesExecutorFactory.create(HermesExecutorFactory.Java:27)
at com.facebook.react.ReactInstanceManager$5.run(ReactInstanceManager.Java:949)
at Java.lang.Thread.run(Thread.Java:760)
Quelques suggestions disponibles ici: https://github.com/facebook/react-native/issues/25601 mais malheureusement aucune n'a fonctionné pour moi. Veuillez suggérer la solution de contournement.
Dans mon cas, il suffit d'activer le enableHermes
dans app/build.gradle
:
project.ext.react = [
entryFile : "index.js",
enableHermes: true, // HERE!
]
Essayez de remplacer votre objet ndk dans app/build.gradle
defaultConfig {
...
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
J'ai eu cette erreur lorsque j'essayais de courir avec une ancienne version de React Native, avant 0.60 alors que dans le package.json
avait une version plus récente définie (post 0.60).
Dans mon cas, Hermes n'a jamais été activé et pourtant j'ai rencontré cette erreur. Le nettoyage (via Android Studio) et la reconstruction ont résolu l'erreur.