当我在我的应用程序中嵌入libabc.so时,它可以正常工作
System.LoadLibrary("abc");
但是,当我将libabc.so移动到/ system / lib /并尝试加载它时
System.Load("/system/lib/libabc.so");
我在logcat中收到以下链接器错误:
06-12 04:42:09.864:D / dalvikvm(17630):尝试加载lib /system/lib/libabc.so 0x4254afd8
06-12 04:42:09.869:E / linker(17630):“libabc.so”:忽略共享库中的2项DT_PREINIT_ARRAY!
06-12 04:42:09.869:D / dalvikvm(17630):添加了共享库/system/lib/libabc.so 0x4254afd8
06-12 04:42:09.869:D / dalvikvm(17630):在/system/lib/libabc.so 0x4254afd8中找不到JNI_OnLoad,跳过init
它实际上加载了我的库,但是我无法调用导出的函数(它告诉我们没有实现本机方法)。
为什么?
答案 0 :(得分:0)
public class TestService extends IntentService {
static { System.loadLibrary("abc"); }
private Handler handler = new Handler();
public native long myfunc(String arg);
public TestService() {
super("TestService");
}
@Override
protected void onHandleIntent(Intent intent) {
runnable.run();
}
private Runnable runnable = new Runnable()
{
public void run()
{
System.out.println(">>> " + myfunc("test"));
}
};
}