Fix JNI for android integration

This commit is contained in:
mhutti1 2017-08-11 14:50:22 -04:00 committed by Matthieu Gautier
parent 7a59779b77
commit d2f7503cfa
6 changed files with 20 additions and 16 deletions

View File

@ -5,10 +5,12 @@ set -e
BUILD_PATH=$(pwd) BUILD_PATH=$(pwd)
echo "javac -d $BUILD_PATH/src/android $@" echo "javac -d $BUILD_PATH/src/android $@"
javac -d $BUILD_PATH/src/android "$@" javac -d $BUILD_PATH/src/android/ "$@"
cd $BUILD_PATH/src/android cd $BUILD_PATH/src/android
echo "javah -jni org.kiwix.kiwixlib.JNIKiwix" echo "javah -jni org.kiwix.kiwixlib"
javah -jni org.kiwix.kiwixlib.JNIKiwix javah -jni org.kiwix.kiwixlib.JNIKiwix
javah -jni org.kiwix.kiwixlib.JNIKiwixReader
javah -jni org.kiwix.kiwixlib.JNIKiwixSearcher
cd $BUILD_PATH cd $BUILD_PATH

View File

@ -21,14 +21,14 @@
#include <jni.h> #include <jni.h>
#include <zim/file.h> #include <zim/file.h>
#include "org_kiwix_kiwixlib_JNIKiwix.h" #include "org_kiwix_kiwixlib_JNIKiwixReader.h"
#include "common/base64.h" #include "common/base64.h"
#include "reader.h" #include "reader.h"
#include "utils.h" #include "utils.h"
/* Kiwix Reader JNI functions */ /* Kiwix Reader JNI functions */
JNIEXPORT jlong JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_get_nativeReader( JNIEXPORT jlong JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getNativeReader(
JNIEnv* env, jobject obj, jstring filename) JNIEnv* env, jobject obj, jstring filename)
{ {
std::string cPath = jni2c(filename, env); std::string cPath = jni2c(filename, env);
@ -301,21 +301,18 @@ Java_org_kiwix_kiwixlib_JNIKiwixReader_getPageUrlFromTitle(JNIEnv* env,
return retVal; return retVal;
} }
JNIEXPORT jboolean JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getTitle( JNIEXPORT jstring JNICALL Java_org_kiwix_kiwixlib_JNIKiwixReader_getTitle(
JNIEnv* env, jobject obj, jobject titleObj) JNIEnv* env, jobject obj)
{ {
jboolean retVal = JNI_FALSE; jstring title;
std::string cTitle;
try { try {
std::string cTitle = READER->getTitle(); std::string cTitle = READER->getTitle();
setStringObjValue(cTitle, titleObj, env); title = c2jni(cTitle, env);
retVal = JNI_TRUE;
} catch (...) { } catch (...) {
std::cerr << "Unable to get ZIM title" << std::endl; std::cerr << "Unable to get ZIM title" << std::endl;
} }
return title;
return retVal;
} }
JNIEXPORT jstring JNICALL JNIEXPORT jstring JNICALL

View File

@ -20,6 +20,7 @@
#include <zim/file.h> #include <zim/file.h>
#include "org_kiwix_kiwixlib_JNIKiwixSearcher.h"
#include "reader.h" #include "reader.h"
#include "searcher.h" #include "searcher.h"

View File

@ -8,7 +8,9 @@ kiwix_jni = custom_target('jni',
'org/kiwix/kiwixlib/JNIKiwixInt.java', 'org/kiwix/kiwixlib/JNIKiwixInt.java',
'org/kiwix/kiwixlib/JNIKiwixString.java', 'org/kiwix/kiwixlib/JNIKiwixString.java',
'org/kiwix/kiwixlib/JNIKiwixBool.java'], 'org/kiwix/kiwixlib/JNIKiwixBool.java'],
output: ['org_kiwix_kiwixlib_JNIKiwix.h'], output: ['org_kiwix_kiwixlib_JNIKiwix.h',
'org_kiwix_kiwixlib_JNIKiwixReader.h',
'org_kiwix_kiwixlib_JNIKiwixSearcher.h'],
command:[jni_generator, '@INPUT@'] command:[jni_generator, '@INPUT@']
) )

View File

@ -77,11 +77,13 @@ public class JNIKiwixReader
public JNIKiwixReader(String filename) public JNIKiwixReader(String filename)
{ {
nativeHandle = get_nativeReader(filename); nativeHandle = getNativeReader(filename);
} }
public JNIKiwixReader() {
}
public native void dispose(); public native void dispose();
private native long get_nativeReader(String filename); private native long getNativeReader(String filename);
private long nativeHandle; private long nativeHandle;
} }

View File

@ -59,7 +59,7 @@ public class JNIKiwixSearcher
usedReaders.addElement(reader); usedReaders.addElement(reader);
}; };
public native Result search(String query, int count); public native void search(String query, int count);
public native Result get_next_result(); public native Result get_next_result();
public native boolean has_more_result(); public native boolean has_more_result();