Android 应用无法在 2.2 上加载 native 库代码

标签 android android-ndk

在使用 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/

相关文章:

java - android/java 概念用单个循环调用所有 getter 方法

java - NavigationDrawer onCreate 空 Activity

android - Jenkins - 使用 Genymotion VM 而不是 Android Emulator

android - 如何使用 JNI+OpenCV+NDK 获取原始的 android 相机传感器图像数据?

c - ARM 内联汇编代码在运行时无法正常工作

android - 如何在 Android Studio 中调试 C++ 代码?

java - 尽管在主要 Activity 中工作,但 native 函数在自定义 View 中抛出 UnsatisfiedLinkError

android - Google 登录按钮没有任何反应

java - 如何设置约束并以编程方式按文本大小的比例增大图像?

android - 找不到 ndk-build.cmd 命令