web-dev-qa-db-fra.com

Android ReactNative Java.lang.UnsatisfiedLinkError: pourrait trouver DSO à charger: libreactnativejni.so

J'ai essayé d'ajouter ReactNative à mon Android Android. J'ai suivi les instructions du lien this . Je pourrais l'ajouter mais l'application se bloque une fois que j'ouvre le réagir à l'activité native. J'ai démarré le serveur en utilisant

adb reverse tcp:8081 tcp:8081

et a commencé à réagir natif en utilisant

react-native start

Je reçois un dialogue que les fichiers js sont en train de charger. Mais finalement, on se retrouve avec un crash. Voici l'erreur qui est imprimée dans logcat:

Java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libreactnativejni.so
    at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.Java:213)
    at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.Java:178)
    at com.facebook.react.bridge.JSCJavaScriptExecutor.<clinit>(JSCJavaScriptExecutor.Java:19)
    at com.facebook.react.ReactInstanceManager.onJSBundleLoadedFromServer(ReactInstanceManager.Java:413)
    at com.facebook.react.ReactInstanceManager.createReactContextInBackground(ReactInstanceManager.Java:236)

Je suis complètement perdu car je n'arrive pas à comprendre la cause de ce problème.

Merci d'avance.

13
Anu

Cela est dû au problème suivant (ouvert pendant 2 ans) https://github.com/facebook/react-native/issues/2814

De l'émission:

React Native sur Android ne fournit pas de version 64 bits de la bibliothèque native libreactnativejni.so, Ce qui peut entraîner des problèmes de compatibilité sur les appareils 64 bits. J'ai rencontré cela en tentant d'intégrer React Native à une grande application existante que je suis en train de développer.

Réaction de Facebook:

" Merci d'avoir signalé! Oui, nous ne fournissons pas la version 64 bits du code natif et le système devrait toujours revenir à 32 bits."

Et:

" La plupart des projets Android utilisent un certain nombre de bibliothèques tierces, et celles qui incluent du code natif 64 bits entraîneront l'échec de React Native."

La réponse SO suivante tiliser des bibliothèques jni 32 bits sur Android 64 bits explique le retour aux bibliothèques 32 bits et le fait que vous ne pouvez pas mélanger. Donc, si 64 bits est trouvé, tout devrait être 64 bits

Je suggère de lire le numéro de Github # 2814. Il existe plusieurs correctifs proposés, mais cela dépend de votre situation ce qui fonctionne.

L'émetteur a également écrit un blog à ce sujet: Mixing 32- and 64-bit Dependencies in Android

J'espère que cela t'aides!

12
Arnold Schrijver

Cela a résolu mon problème:

   ndk {
        abiFilters 'armeabi-v7a', 'x86'
    }

Cela devrait être placé build.gradle section defaultConfig.

17
Aristo Michael