在使用 C++ (NDK) 构建的共享代码库的应用上,Android 2.2 无法加载该库。
当我转到某个 View 时,它需要加载它从 .so native 库获得的结果,它在 2.3+ 上运行,但在 2.2 上,应用程序只是进入黑屏。我认为它在加载 native 代码的过程中快要死了,但不确定发生了什么。
例如:在 2.3 上,ADT 详细输出如下所示:
04-15 11:49:07.210: DEBUG/dalvikvm(26048): Trying to load lib /data/data/com.app.myapp/lib/libViewer.so 0x4051b858
04-15 11:49:07.220: DEBUG/dalvikvm(26048): 添加了共享库/data/data/com.app.myapp/lib/libViewer.so 0x4051b858
但是在 2.2 上。它只是停留在:
04-15 11:56:27.123: DEBUG/dalvikvm(275): Trying to load lib /data/data/com.app.myapp/lib/libViewer.so 0x45f3dc28
它就在这里……
有人遇到过这样的问题吗?
从 Java 的代码角度来看,它卡住在行上:
static {
System.loadLibrary("nativeViewer");//<-- goes into neverland here
}
最佳答案
我在用 gcc 4.7 编译时遇到了这个问题。当我改回使用默认编译器 gcc 4.6 时,我不再遇到您描述的问题。我查看了 ndk 文档,从未看到任何关于 gcc 4.7 不能在 android 2.2 及更早版本上运行的信息,但他们确实说 gcc 4.7 是实验性的。
关于Android 应用无法在 2.2 上加载 native 库代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021993/