Android不满意链接错误:加载共享库时出现问题

Android不满意链接错误:加载共享库时出现问题,android,java-native-interface,shared-libraries,Android,Java Native Interface,Shared Libraries,我正在编译一些Java代码,将其放入.JAR中,然后在其上运行dx--dex。我正在通过adb将文件推送到Android设备,但在运行时链接共享库时遇到问题 在HostConnection.java中,我有以下代码来加载我的库: static { System.loadLibrary("hostConnection"); } 我以这种方式加载应用程序: adb shell su export CLASSPATH=/data/local/device.jar export LD_LIBR

我正在编译一些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)
D/dalvikvm(1616):DexOpt:加载482ms,验证84ms,选择10ms
D/dalvikvm(1608):DexOpt:--END'device.jar'(成功)---
D/dalvikvm(1608):DEX prep'/data/local/device.jar':1715ms解压,1287ms重写
W/dalvikvm(1608):异常Ljava/lang/unsatifiedlinkerror;在Lcom/device/client/HostConnection;期间引发;。
D/AndroidRuntime(1608):关闭虚拟机
W/dalvikvm(1608):threadid=1:线程以未捕获异常退出(组=0x4001d830)
I/Process(1608):发送信号。PID:1608信号:9
E/AndroidRuntime(1608):***系统进程中的致命异常:主
E/AndroidRuntime(1608):java.lang.ExceptionInInitializeError
E/AndroidRuntime(1608):位于com.device.client.Main。(Main.java:27)
E/AndroidRuntime(1608):位于com.device.client.Main.Main(Main.java:21)
E/AndroidRuntime(1608):位于com.android.internal.os.RuntimeInit.finishInit(本机方法)
E/AndroidRuntime(1608):位于com.android.internal.os.RuntimeInit.main(RuntimeInit.java:235)
E/AndroidRuntime(1608):位于dalvik.system.NativeStart.main(本机方法)
E/AndroidRuntime(1608):原因:java.lang.UnsatifiedLink错误:找不到库主机连接
E/AndroidRuntime(1608):在java.lang.Runtime.loadLibrary(Runtime.java:461)
E/AndroidRuntime(1608):位于java.lang.System.loadLibrary(System.java:557)
E/AndroidRuntime(1620):位于com.device.client.HostConnection(HostConnection.java:25)
java中的第25行实际上是System.loadLibrary(“HostConnection”)

我的库名为libhostConnection.so,我的.jar名为device.jar。它们都存储在/data/local中。我已尝试将共享库移动到/system/lib,但shell不允许我复制该文件(只读)

我不确定我做错了什么,但我相信它在运行应用程序时找不到用于链接的共享库。我不确定是否在导出中使用了错误的变量,或者是否应该执行其他操作

谁能帮帮我吗?非常感谢


多谢各位

为什么不试着将库放到eclipse项目中的lib/armeabi(-v7a)目录中呢?我相信这是链接共享库的推荐方式。

我找到了。变量是正确的,但路径应该只是文件夹,而不是.so文件,原因如下:

导出LD_库_路径=/data/local

这确实有效

多谢各位