NDK コンパイル コード (コマンド ライン プログラム) を実行している Android アクティビティがあります。
Runtime.getRuntime().exec(myCommand);
必要な共有ライブラリを次のようにロードします。
static {
System.loadLibrary(myLib);
}
しかし、プロジェクトを実行してエラーストリームからの出力を印刷すると、次のエラーが発生します。
link_image[1963]: 7520 could not load needed library 'libmyLib.so' for './myCommand'
(load_library[1105]: Library 'libmyLib.so' not found)CANNOT LINK EXECUTABLE
libmyLib.so
ディレクトリの下のプロジェクトに存在し、libs/armeabi/
ディレクトリの下の Android デバイスにコピーされていることを確認します/data/data/myProject.path.package/lib/
。実行可能ファイルとライブラリの両方の所有者とグループはsystem:system
、パーミッションも問題ありません。
最初に adb シェルからコマンドを実行すると、同じエラーが発生しますが、設定LD_LIBRARY_PATH
して問題なく実行できます。
./adb shell
export LD_LIBRARY_PATH=/data/data/myProject.path.package/lib:$LD_LIBRARY_PATH
/data/data/myProject.path.package/myCommand
問題は、Java Android プロジェクトからそれを行う方法ですか?
注: GT-P1010 で Linux、Eclipse + Sequoyah、NDK-r5b、Android 2.3.6 (API 10) を使用しています。