Move to renamed NDK symbol AFileDescriptor_getFd

Bug: 185256332
Test: TH
Change-Id: I77f7551a97d015fe5cc54c053020504f5fb93ab7
This commit is contained in:
Orion Hodson
2021-05-12 09:40:08 +01:00
parent d8bb125a4d
commit 88dfe23949

View File

@@ -74,19 +74,19 @@ int GetNativeFileDescriptorWithNdk(JNIEnv* env, jobject javaFd) {
// Since Android S, there is an NDK API to get a file descriptor present in libnativehelper.so.
// libnativehelper is loaded into all processes by the zygote since the zygote uses it
// to load the Android Runtime and is also a public library (because of the NDK API).
typedef int (*ndkGetFD_t)(JNIEnv*, jobject);
static const ndkGetFD_t ndkGetFD = []() -> ndkGetFD_t {
typedef int (*ndkGetFd_t)(JNIEnv*, jobject);
static const ndkGetFd_t ndkGetFd = []() -> ndkGetFd_t {
void* handle = dlopen("libnativehelper.so", RTLD_NOLOAD | RTLD_NODELETE);
auto ndkGetFD = reinterpret_cast<ndkGetFD_t>(dlsym(handle, "AFileDescriptor_getFD"));
if (ndkGetFD == nullptr) {
auto ndkGetFd = reinterpret_cast<ndkGetFd_t>(dlsym(handle, "AFileDescriptor_getFd"));
if (ndkGetFd == nullptr) {
__android_log_print(ANDROID_LOG_FATAL, LOG_TAG,
"Failed to dlsym(AFileDescriptor_getFD): %s", dlerror());
"Failed to dlsym(AFileDescriptor_getFd): %s", dlerror());
dlclose(handle);
}
return ndkGetFD;
return ndkGetFd;
}();
return javaFd != nullptr ? ndkGetFD(env, javaFd) : -1;
return javaFd != nullptr ? ndkGetFd(env, javaFd) : -1;
}
} // namespace