1

在使用 C++ (NDK) 构建的共享代码库的应用程序上工作时,Android 2.2 无法加载该库。

当我转到某个视图时,它需要加载从 .so 本机库获得的结果,它适用于 2.3+,但在 2.2 上,应用程序只是进入黑屏。我认为它在加载本机代码的过程中会死掉,但不确定发生了什么。

例如:在 2.3 上,ADT 详细输出如下所示:

04-15 11:49:07.210: 调试/dalvikvm(26048): 试图加载 lib /data/data/com.app.myapp/lib/libViewer.so 0x4051b858

04-15 11:49:07.220:调试/dalvikvm(26048):添加共享库 /data/data/com.app.myapp/lib/libViewer.so 0x4051b858

但在 2.2 上。它只是停留在:

04-15 11:56:27.123: 调试/dalvikvm(275): 试图加载 lib /data/data/com.app.myapp/lib/libViewer.so 0x45f3dc28

它就坐在这里……

有没有人遇到过这样的问题?

从 Java 的代码角度来看,它冻结在行:

static {
     System.loadLibrary("nativeViewer");//<-- goes into neverland here
}
4

1 回答 1

1

我在用 gcc 4.7 编译时遇到了这个问题。当我改回使用默认编译器 gcc 4.6 时,我不再遇到您描述的问题。我查看了 ndk 文档,从来没有看到任何关于 gcc 4.7 不能在 android 2.2 及更早版本上运行的信息,但他们确实说 gcc 4.7 是实验性的。

于 2013-04-15T18:58:56.957 回答