2010-05-13 4 views
4

Je travaille sur une application Android dans laquelle j'ai utilisé JNI pour le code c natif. Je construis cette application sur la version android 2.0 et ndkr3 et cela fonctionne très bien.impossible de charger la bibliothèque à l'exécution dans l'application android

Maintenant, quand j'ai changé la version android sdk 1.5 et api version 3, j'ai rencontré des problèmes d'impossibilité d'ouvrir la bibliothèque libtest_demo.so.

05-13 16:54:23.603: INFO/dalvikvm(1211): Unable to dlopen(/data/data/org.abc.test_demo/lib/libtest_demo.so): Cannot find library 

Je mis le fichier libtest_demo.so au même endroit /data/data/org.abc.test_demo/lib/libtest_demo.so mais toujours le même problème se pose.

Dans mon fichier java j'ai appelé bibliothèques natives comme,

System.loadLibrary("abc_jni"); 
System.loadLibrary("test_demo"); 

Et du logcat j'ai vu les deux bibliothèques utilisées même adresse mémoire.

C'est sortie logcat

05-13 17:56:15.732: DEBUG/dalvikvm(9897): Trying to load lib /data/data/org.abc.test_demo/lib/libabc_jni.so 0x437317f8 
05-13 17:56:15.732: DEBUG/dalvikvm(9897): Added shared lib /data/data/org.abc.test_demo/lib/libabc_jni.so 0x437317f8 
05-13 17:56:15.742: DEBUG/dalvikvm(9897): Trying to load lib /data/data/org.abc.test_demo/lib/libtest_demo.so 0x437317f8 
05-13 17:56:15.752: INFO/dalvikvm(9897): Unable to dlopen(/data/data/org.abc.test_demo/lib/libtest_demo.so): Cannot find library 

Répondre

7

Cette erreur presque dit toujours « Impossible de trouver la bibliothèque » et il peut y avoir plusieurs raisons à cela. Ce qui est ennuyeux, c'est que dans la plupart des cas ce n'est pas la bibliothèque manquante mais quelque chose d'autre. Les raisons que je suis tombé par hasard sur:

    bibliothèque
  • manque dans le répertoire (évidemment),
  • bibliothèque
  • qui est dynamiquement liée à votre bibliothèque est manquante,
  • versions de la bibliothèque système sur le périphérique/émulateur que votre bibliothèque utilise différents avec ceux que vous liez contre dans le temps de la compilation (symboles manquants, etc.)

je viens de décrire une méthode qui a fonctionné pour moi lors de la résolution d'un problème avec la bibliothèque qui fonctionnait très bien sur émulateur et ne parvenait pas à charger sur Nexus One, peut-être ce wi ll vous aider: http://mpigulski.blogspot.com/2010/09/debugging-dlopen-unsatisfiedlinkerror.html

Questions connexes