2015-08-14 1 views
2

je reçois cela dans logcat lorsque vous essayez de charger une bibliothèque compilé uniquement pour armeabi (en supposant que c'est le repli pour tous les bras * abis).Pourquoi mon Android look application pour /data/app/package_name-1/lib/arm/libLibrary.so au lieu d'utiliser le dossier armeabi

08-14 09:43:51.516 7486-7486/package_name E/art﹕ dlopen("/data/app/package_name-1/lib/arm/libLibrary.so", RTLD_LAZY) failed: dlopen failed: unknown reloc type 160 @ 0xa3725ab4 (82108) 

En raison des contraintes pratiques, je ne peux pas tester cela sur un appareil enraciné, donc tout ce que je sais est que le dossier /data/data/package_name a un lien symbolique lib -> /data/app/package_name-1/lib/arm

Je sais que ce n'est pas un dispositif problème spécifique, étant donné que J'ai déjà utilisé des bibliothèques natives sur le même appareil (avec une application différente, mais la même architecture plus tôt).

Quelqu'un peut-il m'aider ici? Vraiment confus sur ce qui se passe exactement.

J'utilise gradle build (Android Studio), et le libLibrary.so est présent dans le dossier lib/armeabi dans l'apk sur le décompresser.

+0

i gues android-studio fonctionne avec le dossier jniLib contenant tous les fichiers .so. – KOTIOS

+0

@ N5. - Lors de l'extraction de l'apk compilé, je peux trouver le fichier .so présent dans le dossier 'lib/armeabi', peut-il encore être un problème avec le dossier jniLib? – Rads

+0

J'ai essayé avec des fichiers .so dans le dossier libs mais le studio android ne l'a pas ramassé ... peut-être l'ajouter dans le fichier ../main/jinLib/armeabi/.so – KOTIOS

Répondre

1

La question n'était que partiellement correcte. Le vrai problème était avec le type de relocalisation (dont je n'avais aucune idée au début).

erreurs de réinstallation se produisent généralement lorsque le chargeur et le fichier objet ne comprennent pas le même format.

Dans ce cas, le fichier .so a été construit avec c++_static au lieu de gnustl_static. Android/NDK offre la plupart des fonctionnalités c++11, mais certains d'entre eux ne sont pas entièrement opérationnels/fonctionnels comme std::to_string ce qui m'a conduit à essayer c++_static.

Hope this helps quelqu'un d'autre là-bas qui a encore des poils laissés sur son/sa tête.