原生应用程序在Android L上崩溃

ars*_*nk2 7 android android-ndk android-5.0-lollipop

我有一个本机应用程序,它总是在Android KitKat上运行DalivikART运行时,但它现在在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)
Run Code Online (Sandbox Code Playgroud)

Android L中的ART运行时是否与KitKat不同?目前还没有新的NDK可用,因此,如何避免此崩溃,因为似乎issetugid不再支持该功能.

ars*_*nk2 1

该问题已在最终的 Android 5.0 版本中得到修复。无需重新编译现有的二进制文件。

但是,如果使用目标android-21编译本机库,则在以前的 Android 版本(< 5.0)上会失败