【发布时间】:2011-11-10 07:43:42
【问题描述】:
我正在编译一些 Java 代码,将其放入 .JAR 中,然后在其上运行 dx --dex。我正在通过 adb 将文件推送到 Android 设备,但在运行时链接我的共享库时遇到问题。
在 HostConnection.java 中,我有以下代码来加载我的库:
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("hostConnection")。
我的库名为 libhostConnection.so,我的 .jar 名为 device.jar。它们都存储在 /data/local 中。我尝试将共享库移动到 /system/lib,但 shell 不允许我复制文件(只读)。
我不确定我做错了什么,但我相信它在运行应用程序时找不到用于链接的共享库。我不确定我是否在导出中使用了错误的变量,或者我是否应该做其他事情。
谁能帮帮我?将不胜感激。
非常感谢!
【问题讨论】:
标签: android java-native-interface shared-libraries