diff options
author | Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> | 2015-10-11 01:52:39 +0200 |
---|---|---|
committer | Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> | 2015-10-11 02:03:43 +0200 |
commit | 143fb0a4b5d4ab69d4928299d8112ab95d99870a (patch) | |
tree | 094673c521e14d4ba52fd706acba07be96bead49 /sal/android/libreofficekit-jni.c | |
parent | ee8257a1c70eadb7330b0ee99ec3b86fe4084bdf (diff) |
move extracting assets to Java & use AssetManager to access assets
using AssetsManager in both java as well as native parts allows to
handle files both with and without compression transparently
Change-Id: If02f1159c498be7ea965fd9c217410722f2dca1f
Diffstat (limited to 'sal/android/libreofficekit-jni.c')
-rw-r--r-- | sal/android/libreofficekit-jni.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/sal/android/libreofficekit-jni.c b/sal/android/libreofficekit-jni.c index 41fa97e8273d..c5f53c92bcd5 100644 --- a/sal/android/libreofficekit-jni.c +++ b/sal/android/libreofficekit-jni.c @@ -21,6 +21,8 @@ #include <jni.h> #include <android/log.h> +#include <android/asset_manager.h> +#include <android/asset_manager_jni.h> #include <osl/detail/android-bootstrap.h> @@ -34,6 +36,7 @@ extern const char* data_dir; extern const char* cache_dir; extern void* apk_file; extern int apk_file_size; +AAssetManager* native_asset_manager; extern void Java_org_libreoffice_android_Bootstrap_putenv(JNIEnv* env, jobject clazz, jstring string); extern void Java_org_libreoffice_android_Bootstrap_redirect_1stdio(JNIEnv* env, jobject clazz, jboolean state); @@ -63,7 +66,7 @@ void Java_org_libreoffice_kit_LibreOfficeKit_redirectStdio __attribute__ ((visibility("default"))) jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative (JNIEnv* env, jobject clazz, - jstring dataDir, jstring cacheDir, jstring apkFile) + jstring dataDir, jstring cacheDir, jstring apkFile, jobject assetManager) { struct stat st; int fd; @@ -76,6 +79,8 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative (void) clazz; + native_asset_manager = AAssetManager_fromJava(env, assetManager); + dataDirPath = (*env)->GetStringUTFChars(env, dataDir, NULL); data_dir = strdup(dataDirPath); (*env)->ReleaseStringUTFChars(env, dataDir, dataDirPath); @@ -122,10 +127,6 @@ jboolean Java_org_libreoffice_kit_LibreOfficeKit_initializeNative return JNI_FALSE; } - // Extract files from the .apk that can't be used mmapped directly from it - extract_files(UNPACK_TREE, UNPACK_TREE, 0); - extract_files(UNPACK_TREE_GZ, UNPACK_TREE_GZ, 1); - // LibreOfficeKit expects a path to the program/ directory free(full_program_dir); data_dir_len = strlen(data_dir); @@ -160,4 +161,12 @@ jobject Java_org_libreoffice_kit_LibreOfficeKit_getLibreOfficeKitHandle return (*env)->NewDirectByteBuffer(env, (void*) aOffice, sizeof(LibreOfficeKit)); } +__attribute__ ((visibility("default"))) +AAssetManager * +lo_get_native_assetmgr(void) +{ + return native_asset_manager; +} + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |