diff --git a/jni/NativeFormats/fbreader/src/library/Book.cpp b/jni/NativeFormats/fbreader/src/library/Book.cpp index 242d23cae..258cac6bf 100644 --- a/jni/NativeFormats/fbreader/src/library/Book.cpp +++ b/jni/NativeFormats/fbreader/src/library/Book.cpp @@ -94,17 +94,17 @@ shared_ptr Book::loadFromJavaBook(JNIEnv *env, jobject javaBook) { env->DeleteLocalRef(javaFile); std::string title; - javaString = (jstring) env->GetObjectField(javaBook, AndroidUtil::FID_Book_Title); + javaString = (jstring) env->CallObjectMethod(javaBook, AndroidUtil::MID_Book_getTitle); AndroidUtil::extractJavaString(env, javaString, title); env->DeleteLocalRef(javaString); std::string language; - javaString = (jstring) env->GetObjectField(javaBook, AndroidUtil::FID_Book_Language); + javaString = (jstring) env->CallObjectMethod(javaBook, AndroidUtil::MID_Book_getLanguage); AndroidUtil::extractJavaString(env, javaString, language); env->DeleteLocalRef(javaString); std::string encoding; - javaString = (jstring) env->GetObjectField(javaBook, AndroidUtil::FID_Book_Encoding); + javaString = (jstring) env->CallObjectMethod(javaBook, AndroidUtil::MID_Book_getEncoding); AndroidUtil::extractJavaString(env, javaString, encoding); env->DeleteLocalRef(javaString); diff --git a/jni/NativeFormats/util/AndroidUtil.cpp b/jni/NativeFormats/util/AndroidUtil.cpp index a7c340ee0..9cceac31d 100644 --- a/jni/NativeFormats/util/AndroidUtil.cpp +++ b/jni/NativeFormats/util/AndroidUtil.cpp @@ -54,9 +54,9 @@ jmethodID AndroidUtil::MID_ZLFile_isDirectory; jmethodID AndroidUtil::MID_ZLFile_size; jfieldID AndroidUtil::FID_Book_File; -jfieldID AndroidUtil::FID_Book_Title; -jfieldID AndroidUtil::FID_Book_Language; -jfieldID AndroidUtil::FID_Book_Encoding; +jmethodID AndroidUtil::MID_Book_getTitle; +jmethodID AndroidUtil::MID_Book_getLanguage; +jmethodID AndroidUtil::MID_Book_getEncoding; jmethodID AndroidUtil::SMID_Tag_getTag; @@ -111,9 +111,9 @@ bool AndroidUtil::init(JavaVM* jvm) { CHECK_NULL( cls = env->FindClass(Class_Book) ); CHECK_NULL( FID_Book_File = env->GetFieldID(cls, "File", "Lorg/geometerplus/zlibrary/core/filesystem/ZLFile;") ); - CHECK_NULL( FID_Book_Title = env->GetFieldID(cls, "myTitle", "Ljava/lang/String;") ); - CHECK_NULL( FID_Book_Language = env->GetFieldID(cls, "myLanguage", "Ljava/lang/String;") ); - CHECK_NULL( FID_Book_Encoding = env->GetFieldID(cls, "myEncoding", "Ljava/lang/String;") ); + CHECK_NULL( MID_Book_getTitle = env->GetMethodID(cls, "getTitle", "()Ljava/lang/String;") ); + CHECK_NULL( MID_Book_getLanguage = env->GetMethodID(cls, "getLanguage", "()Ljava/lang/String;") ); + CHECK_NULL( MID_Book_getEncoding = env->GetMethodID(cls, "getEncoding", "()Ljava/lang/String;") ); env->DeleteLocalRef(cls); CHECK_NULL( cls = env->FindClass(Class_Tag) ); diff --git a/jni/NativeFormats/util/AndroidUtil.h b/jni/NativeFormats/util/AndroidUtil.h index d05f636cf..82afa1d47 100644 --- a/jni/NativeFormats/util/AndroidUtil.h +++ b/jni/NativeFormats/util/AndroidUtil.h @@ -63,9 +63,9 @@ public: static jmethodID SMID_PluginCollection_Instance; static jfieldID FID_Book_File; - static jfieldID FID_Book_Title; - static jfieldID FID_Book_Language; - static jfieldID FID_Book_Encoding; + static jmethodID MID_Book_getTitle; + static jmethodID MID_Book_getLanguage; + static jmethodID MID_Book_getEncoding; static jmethodID SMID_Tag_getTag; diff --git a/proguard.cfg b/proguard.cfg index 39c7d1150..17ba868f5 100755 --- a/proguard.cfg +++ b/proguard.cfg @@ -33,9 +33,14 @@ } -keep class org.geometerplus.fbreader.library.Book -keepclassmembers class org.geometerplus.fbreader.library.Book { + public ** File; + public ** getTitle(); + public ** getLanguage(); + public ** getEncoding(); } -keep class org.geometerplus.fbreader.library.Tag -keepclassmembers class org.geometerplus.fbreader.library.Tag { + public static ** getTag(**,**); } -keepclasseswithmembernames class * {