在Android 11中,引入了一个名为fdsan的新特性,该特性可用于检测未关闭的文件描述符。然而,在某些情况下,开发者可能希望禁用此特性,特别是在使用JNI时,因为该特性可能会导致一些错误。
以下是在Android 11中使用JNI时如何禁用fdsan的示例代码:
1.1 在应用程序的Android.mk文件中,添加以下行:
LOCAL_LDFLAGS += -Wl,--exclude-libs,fdsan_rt
这将把应用程序与fdsan_rt无缝隔离,从而禁用fdsan。
1.2 然后,在应用程序的C/C++代码中,使用以下宏来禁用fdsan的运行时检查:
#define _FORTIFY_SOURCE 0 #define _LIBCPP_DISABLE_NODISCARD_EXTENSION
这将让编译器知道我们要禁用fdsan的检查,从而让JNI代码正确运行。