【发布时间】:2011-12-19 14:23:56
【问题描述】:
我有一个相当大的共享库文件(= 12 兆字节),其中不包含任何 JNI 代码。
调用System.loadLibrary("some_file") 时,方法从不返回,并且不会生成相关输出。此外,Windows 任务管理器报告模拟器实例并未占用所有 CPU 资源。
我有一个类,代码如下:
static
{
System.out.println("Trying");
System.loadLibrary("some_file");
System.out.println("Works");
}
这是从 LogCat 给出的输出:
I/System.out(534): Trying
D/dalvikvm(534): Trying to load lib /data/data/app/lib/libsome_file.so 0x40643c20
如果我上传一个使用库 libsome_file.so 的本机测试应用程序并从模拟器 shell 运行它,那么该应用程序可以工作。
是否有任何方法可以调试 System.loadLibrary 正在做什么,或者是否有人有一些提示,为什么 System.loadLibrary 可能永远不会返回?
【问题讨论】:
-
如果您的库需要其他库,您可能会遇到问题,但我不希望它挂起。我假设您已经成功尝试了较小的库。
-
我已经尝试了一些 ndk-samples。他们完美地工作。
标签: java android-ndk shared-libraries