From e028bcbb04767ece227659a3877ea1aa45052c14 Mon Sep 17 00:00:00 2001 From: Veloman Yunkan Date: Sun, 6 Dec 2020 00:12:52 +0400 Subject: [PATCH] Android's java.io.FileDescriptor is different --- src/wrapper/java/kiwixreader.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/wrapper/java/kiwixreader.cpp b/src/wrapper/java/kiwixreader.cpp index c3f06ecc5..df32595ed 100644 --- a/src/wrapper/java/kiwixreader.cpp +++ b/src/wrapper/java/kiwixreader.cpp @@ -52,6 +52,14 @@ int jni2fd(const jobject& fdObj, JNIEnv* env) { jclass class_fdesc = env->FindClass("java/io/FileDescriptor"); jfieldID field_fd = env->GetFieldID(class_fdesc, "fd", "I"); + if ( field_fd == NULL ) + { + env->ExceptionClear(); + // Under Android the (private) 'fd' field of java.io.FileDescriptor has been + // renamed to 'descriptor'. See, for example, + // https://android.googlesource.com/platform/libcore/+/refs/tags/android-8.1.0_r1/ojluni/src/main/java/java/io/FileDescriptor.java#55 + field_fd = env->GetFieldID(class_fdesc, "descriptor", "I"); + } return env->GetIntField(fdObj, field_fd); }