実行時にサードパーティの jni ライブラリをロードしたい。
SDカードから直接ロードしようとしました。予想通り失敗しました。
ライブラリを sdcard から /data/data/app/ にコピーしようとしまし
System.load(/data/data/app/libjni.so)
たが、HTC HERO では動作しますが、Android 2.1 の HTC Legend では失敗します。ネイティブ コードの実行中に失敗し、情報のないスタック トレースをログに記録します。それを行う他の方法はありますか? これは、1.5 (HTC Hero) では機能しますが、2.1 (HTC Legend) では機能しない最高のコードです。
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");