Javaコードをコンパイルして.JARに入れてから、その上でdx --dexを実行しています。私はadbを通じてAndroidデバイスにファイルをプッシュしていますが、実行時に共有ライブラリをリンクする際に問題が発生しています。 HostConnection.javaでAndroid UnsatisfiedLinkError:共有ライブラリをロードする際の問題
、私は自分のライブラリをロードするために、次のコードを持っている:
static {
System.loadLibrary("hostConnection");
}
は、私は、アプリケーションをこのようにロードしています:
adb shell
su
export CLASSPATH=/data/local/device.jar
export LD_LIBRARY_PATH=/data/local/libhostConnection.so
exec app_process /system/bin com.device.client.Main
私は残念ながら、次のエラーを取得しています:
D/dalvikvm(1616): DexOpt: load 482ms, verify 84ms, opt 10ms
D/dalvikvm(1608): DexOpt: --- END 'device.jar' (success) ---
D/dalvikvm(1608): DEX prep '/data/local/device.jar': unzip in 1715ms, rewrite 1287ms
W/dalvikvm(1608): Exception Ljava/lang/UnsatisfiedLinkError; thrown during Lcom/device/client/HostConnection;.<clinit>
D/AndroidRuntime(1608): Shutting down VM
W/dalvikvm(1608): threadid=1: thread exiting with uncaught exception (group=0x4001d830)
I/Process (1608): Sending signal. PID: 1608 SIG: 9
E/AndroidRuntime(1608): *** FATAL EXCEPTION IN SYSTEM PROCESS: main
E/AndroidRuntime(1608): java.lang.ExceptionInInitializerError
E/AndroidRuntime(1608): at com.device.client.Main.<init>(Main.java:27)
E/AndroidRuntime(1608): at com.device.client.Main.main(Main.java:21)
E/AndroidRuntime(1608): at com.android.internal.os.RuntimeInit.finishInit(Native Method)
E/AndroidRuntime(1608): at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
E/AndroidRuntime(1608): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(1608): Caused by: java.lang.UnsatisfiedLinkError: Library hostConnection not found
E/AndroidRuntime(1608): at java.lang.Runtime.loadLibrary(Runtime.java:461)
E/AndroidRuntime(1608): at java.lang.System.loadLibrary(System.java:557)
E/AndroidRuntime(1620): at com.device.client.HostConnection.<clinit>(HostConnection.java:25)
HostConnection.javaの25行目は実際にはSystem.loadLibrary( "hostConnectio n ")。
私のライブラリはlibhostConnection.soと呼ばれ、私の.jarはdevice.jarと呼ばれます。これらは両方とも/ data/localに格納されています。共有ライブラリを/ system/libに移動しようとしましたが、シェルはファイルをコピーできません(読み取り専用)。
私が間違っていることはわかりませんが、アプリケーションを実行するときにリンク用の共有ライブラリが見つからないと思います。輸出に間違った変数を使用しているのか、何か他のことをしなければならないのかどうかはわかりません。
誰でもお手伝いできますか?大変感謝しています。
ありがとうございました!
私はEclipseをまったく使用していません。私はすべて手動で行っています。 – Jary