我有一个 native 应用程序,它始终在具有 Dalivik 和 ART 运行时的 Android KitKat 上运行,但它现在在 Android L 上崩溃了以下痕迹:
E/art(12810): dlopen("/data/app-lib/com.mylib.example", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "issetugid" referenced by "mylib.so"...
D/AndroidRuntime(12810): Shutting down VM
E/AndroidRuntime(12810): FATAL EXCEPTION: main
E/AndroidRuntime(12810): Process: com.mylib.example, PID: 12810
E/AndroidRuntime(12810): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "issetugid" referenced by "mylib.so"...
E/AndroidRuntime(12810): at java.lang.Runtime.loadLibrary(Runtime.java:364)
E/AndroidRuntime(12810): at java.lang.System.loadLibrary(System.java:610)
Android L 中的 ART 运行时与 KitKat 不同吗?目前还没有新的 NDK 可用,因此,如何避免此崩溃,因为似乎不再支持函数 issetugid
。
最佳答案
此问题已在最终的 Android 5.0 版本中得到修复。无需重新编译现有的二进制文件。
但是,如果使用目标 android-21 编译 native 库,则在以前的 Android 版本 (< 5.0) 上会失败
关于android - native 应用程序在 Android L 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24452185/