2015-08-04 4 views
1

J'ai placé une bibliothèque .so dans le dossier/libs/armeabi/(j'ai également essayé juste dans le dossier/libs) de mon application et j'ai essayé de charger avec une méthode statique. Je reçois une erreur UnsatisfiedLinkError/null.Pourquoi ma bibliothèque native ne se charge-t-elle pas dans mon application Android?

J'ai essayé le chemin complet dans la méthode statique mais j'ai toujours l'erreur.

static { 
    System.loadLibrary("/data/data/com.imtroymiller.myapp/lib/armeabi/libmylib.so"); 
} 

C'est tout le message d'erreur que je reçois.

08-04 12:49:22.204: E/AndroidRuntime(3352): java.lang.UnsatisfiedLinkError: Couldn't load /data/data/com.imtroymiller.myapp/lib/armeabi/libmylib.so from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.imtroymiller.myapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.imtroymiller.myapp-1, /vendor/lib, /system/lib]]]: findLibrary returned null 

J'ai lu dans le tutoriel ci-dessous et je comprends comment utilisé pour NDK pour créer une bibliothèque à partir du code source, mais je suis en train de charger une bibliothèque existante dans mon application afin que je puisse exécuter un exécutable dépend de la bibliothèque.

http://code.tutsplus.com/tutorials/ndk-tutorial--mobile-2152

J'ai essayé cela sur deux appareils, les deux ont un accès root. L'un est CyanogenMod 11 et l'autre est CyanogenMod 12.

Edit: j'ai pu les charger en utilisant ...

System.load("/data/data/com.imtroymiller.myapp/lib/libmylib.so"); 

Il ressemble System.load prend le nom de chemin et prend la System.loadLibrary nom de la bibliothèque. Mais les deux avec charge la bibliothèque.

Répondre

0

j'ai pu charger les utilisant ...

System.load("/data/data/com.imtroymiller.myapp/lib/libmylib.so"); 

Il semble que System.load prenne le nom du chemin et System.loadLibrary prenne le nom de la bibliothèque. Mais les deux vont charger la bibliothèque.

0

Vous pouvez simplement utiliser le chemin relatif: System.loadLibrary("mylib")

Le chemin libs/armeabi/est correct si vous avez construit votre bibliothèque pour l'architecture armeabi (il est par défaut)

+0

Mais je reçois le même message d'erreur de toute façon. – ImTroyMiller