android/Bootstrap/src/org/libreoffice/android/Bootstrap.java | 27 +++++ android/experiments/DocumentLoader/Makefile | 18 +++ android/experiments/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java | 3 sal/android/lo-bootstrap.c | 49 +++++++--- 4 files changed, 83 insertions(+), 14 deletions(-)
New commits: commit 6b6ca3d1168323651e87c51268b5c0c37532999b Author: Tor Lillqvist <tlillqv...@suse.com> Date: Mon Apr 2 12:39:31 2012 +0300 Automate setting of FONTCONFIG_FILE diff --git a/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java b/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java index 443b770..98df770 100644 --- a/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java +++ b/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java @@ -127,6 +127,18 @@ public class Bootstrap extends NativeActivity // Extract files from the .apk that can't be used mmapped directly from it extract_files(); + + // If we notice that a fonts.conf file was extracted, automatically + // set the FONTCONFIG_FILE env var. + InputStream i; + try { + i = activity.getAssets().open("unpack/etc/fonts/fonts.conf"); + } + catch (java.io.IOException e) { + i = null; + } + if (i != null) + putenv("FONTCONFIG_FILE=" + dataDir + "/etc/fonts/fonts.conf"); } @Override commit 366cba7d6f3a100d51b576927dde446ab36e9483 Author: Tor Lillqvist <tlillqv...@suse.com> Date: Mon Apr 2 12:38:48 2012 +0300 Add fonts.conf to this app, too diff --git a/android/experiments/DocumentLoader/Makefile b/android/experiments/DocumentLoader/Makefile index 2bacbbb..76210a0 100644 --- a/android/experiments/DocumentLoader/Makefile +++ b/android/experiments/DocumentLoader/Makefile @@ -196,6 +196,9 @@ copy-stuff: echo 'ProductMinor=1' >> assets/program/versionrc echo 'ProductSource=OOO350' >> assets/program/versionrc echo 'ReferenceOOoMajorMinor=3.6' >> assets/program/versionrc +# Assets that are unpacked at run-time into the app's data directory. + mkdir -p assets/unpack/etc/fonts + cp fonts.conf assets/unpack/etc/fonts # # Then gdbserver and gdb.setup so that we can debug with ndk-gdb. # commit a9a50cd9ffcd53c631fd13d20aa7e0609d92fc4d Author: Tor Lillqvist <tlillqv...@suse.com> Date: Mon Apr 2 12:38:23 2012 +0300 Refactor where patch_libgnustl_shared() and extract_files() are called diff --git a/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java b/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java index c60c9e9..443b770 100644 --- a/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java +++ b/android/Bootstrap/src/org/libreoffice/android/Bootstrap.java @@ -38,6 +38,7 @@ import android.util.Log; import fi.iki.tml.CommandLine; import java.io.File; +import java.io.InputStream; import java.util.Arrays; import java.util.Scanner; @@ -73,7 +74,10 @@ public class Bootstrap extends NativeActivity // To be called after you are sure libgnustl_shared.so // has been loaded - public static native void patch_libgnustl_shared(); + static native void patch_libgnustl_shared(); + + // Extracts files in the .apk that need to be extraced into the app's tree + static native void extract_files(); // Wrapper for getpid() public static native int getpid(); @@ -97,6 +101,8 @@ public class Bootstrap extends NativeActivity // (contentbroker.cxx), also this called indirectly through the lo-bootstrap library public static native void initUCBHelper(); + // This setup() method is called 1) in apps that use *this* class as their activity from onCreate(), + // and 2) should be called from other kinds of LO code using apps. public static void setup(Activity activity) { String dataDir = null; @@ -114,6 +120,13 @@ public class Bootstrap extends NativeActivity if (!setup(dataDir, activity.getApplication().getPackageResourcePath(), llpa)) return; + // We build LO code against the shared GNU C++ library + dlopen("libgnustl_shared.so"); + // and need to patch it. + patch_libgnustl_shared(); + + // Extract files from the .apk that can't be used mmapped directly from it + extract_files(); } @Override diff --git a/android/experiments/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java b/android/experiments/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java index d47a6ef..93ed87e 100644 --- a/android/experiments/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java +++ b/android/experiments/DocumentLoader/src/org/libreoffice/android/examples/DocumentLoader.java @@ -52,9 +52,6 @@ public class DocumentLoader Bootstrap.putenv("SAL_LOG=yes"); - Bootstrap.dlopen("libgnustl_shared.so"); - Bootstrap.patch_libgnustl_shared(); - // Load a lot of shlibs here explicitly in advance because that // makes debugging work better, sigh Bootstrap.dlopen("libvcllo.so"); diff --git a/sal/android/lo-bootstrap.c b/sal/android/lo-bootstrap.c index a216e0d..75a3898 100644 --- a/sal/android/lo-bootstrap.c +++ b/sal/android/lo-bootstrap.c @@ -1518,7 +1518,7 @@ extract_files(const char *prefix) lo_apk_closedir(tree); } -// public static native void patch_libgnustl_shared(); +// static native void patch_libgnustl_shared(); __attribute__ ((visibility("default"))) void @@ -1531,6 +1531,19 @@ Java_org_libreoffice_android_Bootstrap_patch_1libgnustl_1shared(JNIEnv* env, patch_libgnustl_shared(); } +// static native void extract_files(); + +__attribute__ ((visibility("default"))) +void +Java_org_libreoffice_android_Bootstrap_extract_1files(JNIEnv* env, + jobject clazz) +{ + (void) env; + (void) clazz; + + extract_files(UNPACK_TREE); +} + /* Android's JNI works only to libraries loaded through Java's * System.loadLibrary(), it seems. Not to functions loaded by a dlopen() call * in native code. For instance, to call a function in libvcllo.so, we need to @@ -1666,10 +1679,6 @@ android_main(struct android_app* state) lo_main_argv[0] = lo_main_info.dli_fname; } - patch_libgnustl_shared(); - - extract_files(UNPACK_TREE); - lo_main(lo_main_argc, lo_main_argv); fprintf (stderr, "exit android_main\n"); } commit 2906a654d0c59adae71f4c0fb1c72adb3d5477a0 Author: Tor Lillqvist <tlillqv...@suse.com> Date: Mon Apr 2 11:06:24 2012 +0300 More libs diff --git a/android/experiments/DocumentLoader/Makefile b/android/experiments/DocumentLoader/Makefile index ddf5146..2bacbbb 100644 --- a/android/experiments/DocumentLoader/Makefile +++ b/android/experiments/DocumentLoader/Makefile @@ -48,8 +48,10 @@ copy-stuff: basebmplo \ basegfxlo \ bootstrap.uno \ + cdrimportlo \ comphelpgcc3 \ datelo \ + dbaxmllo \ expwrap.uno \ fastsax.uno \ fileacc \ @@ -59,6 +61,7 @@ copy-stuff: freetype \ frmlo \ gcc3_uno \ + hwplo \ i18nisolang1gcc3 \ i18npaperlo \ i18npool.uno \ @@ -76,18 +79,26 @@ copy-stuff: lo-bootstrap \ localedata_en \ localedata_others \ + lwpftlo \ mergedlo \ msfilterlo \ + msworkslo \ ooxlo \ reflection.uno \ reg \ saxlo \ sclo \ + scdlo \ scfiltlo \ + sddlo \ + smdlo \ sotlo \ stocservices.uno \ store \ + svgfilterlo \ svllo \ + swdlo \ + t602filterlo \ textinstream.uno \ tllo \ ucbhelper4gcc3 \ @@ -100,7 +111,11 @@ copy-stuff: utllo \ vbahelperlo \ vcllo \ + visioimportlo \ + wpftlo \ + wpgimportlo \ xml2 \ + xmlfdlo \ xmlreader \ xstor \ ); do \ commit d975f4aab223680260140383f5c16dd31f9cc71d Author: Tor Lillqvist <tlillqv...@suse.com> Date: Mon Apr 2 11:05:54 2012 +0300 Add a JNI_OnLoad() to store the JavaVM* also from non-NativeActivity apps diff --git a/sal/android/lo-bootstrap.c b/sal/android/lo-bootstrap.c index a79b9dd..a216e0d 100644 --- a/sal/android/lo-bootstrap.c +++ b/sal/android/lo-bootstrap.c @@ -71,16 +71,22 @@ struct engine { int dummy; }; +/* These vars are valid / used only when this library is used from + * NativeActivity-based apps. + */ static struct android_app *app; -static const char *data_dir; -static const char **library_locations; -static void *apk_file; -static int apk_file_size; static int (*lo_main)(int, const char **); static int lo_main_argc; static const char **lo_main_argv; static int sleep_time = 0; +/* These are valid / used in all apps. */ +static const char *data_dir; +static const char **library_locations; +static void *apk_file; +static int apk_file_size; +static JavaVM *the_java_vm; + /* Zip data structures */ /* compression methods */ @@ -323,6 +329,20 @@ free_ptrarray(void **pa) free(pa); } +/* The lo-bootstrap shared library is always loaded from Java, so + * this is always called by JNI first. + */ +__attribute__ ((visibility("default"))) +jint +JNI_OnLoad(JavaVM* vm, void* reserved) +{ + (void) reserved; + + the_java_vm = vm; + + return JNI_VERSION_1_2; +} + __attribute__ ((visibility("default"))) jobjectArray Java_org_libreoffice_android_Bootstrap_dlneeds(JNIEnv* env, @@ -1602,7 +1622,7 @@ __attribute__ ((visibility("default"))) JavaVM * lo_get_javavm(void) { - return app->activity->vm; + return the_java_vm; } __attribute__ ((visibility("default"))) _______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits