9
votes

Pourquoi libgnustl_shared.so est-il copié de mon apk?

J'ai un projet Android avec une structure de dossiers libs Like: xxx

FOO et bar sont des bibliothèques tiers, mystuff est ma propre bibliothèque à partir d'un projet distinct Android JNI qui nécessite gnustl_shared , qui est du même projet JNI.

Lorsque je construis mon projet en Eclipse, je peux afficher le contenu de l'APK généré à l'aide de Unzip -l , et il montre en effet que tous ces fichiers de bibliothèque ont été inclus.

Cependant, après avoir installé l'APK, le dossier /data/data/com.myproject/data/com.myproject/lib ne contient aucun libgnustl_shared.so , même si les autres bibliothèques sont présentes.

Cela conduit inévitablement à l'erreur suivante: xxx

comme une vérification de la santé mentale, j'ai couru adb pousser ./libs/armeabi/libgnustl_shared.so / données /data/com.myproject/lib et bien sûr, l'application commence comme prévu.

Je ne vois rien dans la console de construction ou de la console Eclipse qui suggère TS Il y avait des problèmes de construction ou d'installation de l'application.

  • Qu'est-ce qui pourrait empêcher libgnustl_shared.so d'être installé avec ma demande?
  • Où puis-je aller chercher à savoir ce qui se passe quand un APK est installé?

    S'il vous plaît laissez-moi savoir dans un commentaire s'il y a des informations spécifiques que je peux fournir cela pourrait aider.


3 Réponses :


0
votes

Je pense que votre libgnustl_shared.so doit sous / armationbi-v7a pas sous / armabi

S'il vous plaît essayez de copier libgnustl_shared.so to / armabi-v7a


5 commentaires

Salut @Namuol; si vous n'avez pas pu trouver libgnustl_shared.so sous /data/data/com.myproject/lib signifie que cette lib n'est pas emballée à votre APK.


@NLULUOL SONT VOTES NOMBRE APP_ABI IN Application.mk ? Par défaut, le app_abi est égal à ARMAEBI ,


Non - libgnustl_shared.so est réellement dans l'APK. J'ai fait certain de cela.


@ Namuol, je pense qu'il est préférable de répertorier vos fichiers .mk


Que se passerait-il si vous avez supprimé le répertoire Libs / Armeabi-V7A et laissé simplement l'ARMEABI DIR dans votre source?



0
votes

Regardez la réponse ici: Comment relier une bibliothèque dans NDK Demande Le problème est probablement dans votre fichier Android.mk. Vous devriez avoir une ligne comme celle du bas: xxx

sinon, alors vous n'incluez pas votre bibliothèque partagée.


1 commentaires

J'utilise cette ligne exacte dans le projet JNI où j'ai obtenu libmystuff.so et libgnu_stl_shared.so ; Le projet que je fais référence dans ma question n'est pas un projet JNI, donc aucun android.mk est nécessaire.



2
votes

Je pense que, dans votre fichier Android.MK de votre projet JNI, probablement, lorsque vous construisez libmystuff.so, vous référenciez libgnustl_shared.so comme: xxx

peut-être que vous pouvez essayer Pour l'ajouter en tant que module (NDK fonctionne vraiment concentré sur les modules), quelque chose comme: xxx

et (dans la section que vous construisez libmystuff.so): xxx

et vérifier s'il est enfin copié


1 commentaires

Merci. Il manquait le local_shared_libraries: = gnustl_shared ligne.