From d11ed8c4d7816cfe40181178c2150c8056d388f9 Mon Sep 17 00:00:00 2001 From: Robin Watts Date: Tue, 15 Nov 2016 19:29:00 +0000 Subject: Fix Java 32/64bit detection. Fix some java typos. Thanks to Fred for nicely pointing out that I'd been testing the wrong build. Also, make us default to 32bit if sun.arch.data.model is not defined, as Android doesn't set this. We will need to find a nice way to spot 32/64 bittedness on Android. --- .../java/src/com/artifex/mupdf/fitz/Context.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'platform/java') diff --git a/platform/java/src/com/artifex/mupdf/fitz/Context.java b/platform/java/src/com/artifex/mupdf/fitz/Context.java index 3ee91822..60de22e6 100644 --- a/platform/java/src/com/artifex/mupdf/fitz/Context.java +++ b/platform/java/src/com/artifex/mupdf/fitz/Context.java @@ -21,16 +21,30 @@ public class Context } } - private static String getLibraryName(void) { + private static String getLibraryName() { /* Mac OS always uses 64bit DLLs for any JDK 1.7 or above */ if (System.getProperty("os.name").toLowerCase().contains("mac os")) { return "mupdf_java64"; } + /* Sun and OpenJDK JVMs support this way of finding bittedness */ String val = System.getProperty("sun.arch.data.model"); - if (val != null && val.equals("32")) { - return "mupdf_java32" + /* Android does NOT support this, and returns NULL */ + if (val != null && val.equals("64")) { + return "mupdf_java64"; } - return "mupdf_java64"; + + /* We might be running Android here. We could find out by + * doing the following test: + * val = System.getProperty("java.vm.name"); + * if (val != null && val.toLowerCase().contains("dalvik")) { + * ...Do something Androidy to test for 32/64 here... + * } + * (Currently, both Dalvik and ART return 'Dalvik'). + * We know of no portable way to detect 32 or 64bittedness + * on android though, so for now will assume 32. + */ + + return "mupdf_java32"; } static { init(); } -- cgit v1.2.3