Je souhaite charger une bibliothèque jni tierce en phase d'exécution.
J'ai essayé de charger directement à partir de la carte SD. Il a échoué.
J'ai essayé de copier la bibliothèque de sdcard/data/data/app/puis
System.load(/data/data/app/libjni.so)
Il fonctionne sur HTC HERO, mais échoue sur HTC Legend avec Android 2.1. échoue lors de l'exécution du code natif et écrit pour consigner la trace de la pile non informative Toute autre façon de le faire? C'est le meilleur morceau de code, qui fonctionne à 1.5 (HTC Hero), mais ne fonctionne pas sur 2.1 (HTC Legend).Comment charger jni de la carte SD sur android 2.1?
FileInputStream fis = new FileInputStream("/sdcard/libjni.so");
File nf = new File("/data/data/app/libjni.so");
FileOutputStream fos = new FileOutputStream(nf);
byte[] buf = new byte[2048];
int n;
while ((n = fis.read(buf)) > 0)
fos.write(buf, 0, n);
fis.close();
fos.close();
System.load("/data/data/app/libjni.so");
Vous n'avez pas la possibilité de lire ou d'écrire un fichier '/ data/data/libjni.so' sur un périphérique de production. – CommonsWare
Yup. Vous voudriez le copier dans le répertoire "lib" du répertoire d'installation de l'application. Du côté positif, le chargeur de classe de l'application le trouverait automatiquement, ainsi vous pourriez utiliser System.loadLibrary() au lieu de System.load(). – fadden
Désolé pour les erreurs en question. Malheureusement, je n'ai aucun droit d'écrire dans/data/data/app/lib depuis mon application pendant l'exécution. J'ai essayé, mais j'ai obtenu une exception FileNotFoundException, quand j'ai essayé de créer un nouveau fichier. –