From 43ee5ae9f4da22a9c591cb13e7257d08c5be2e32 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alexis=20Laferri=C3=A8re?= Date: Sat, 15 Mar 2014 08:24:14 -0400 Subject: [PATCH] android: support FFI with Java MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Alexis Laferrière --- lib/android.nit | 2 ++ lib/mnit_android/android_app.nit | 15 +++++++++++++++ src/android_platform.nit | 12 ++++++++++++ 3 files changed, 29 insertions(+) diff --git a/lib/android.nit b/lib/android.nit index 7f7883e..91e9f66 100644 --- a/lib/android.nit +++ b/lib/android.nit @@ -20,3 +20,5 @@ # # Will, in the near future, provide services specific to Android. module android is platform + +import java diff --git a/lib/mnit_android/android_app.nit b/lib/mnit_android/android_app.nit index d396bd0..19b0c97 100644 --- a/lib/mnit_android/android_app.nit +++ b/lib/mnit_android/android_app.nit @@ -588,3 +588,18 @@ redef class App } `} end + +redef class Sys + # Get the running JVM + redef fun create_default_jvm + do + var jvm = ndk_jvm + var jni_env = jvm.attach_current_thread + if jni_env.address_is_null then jni_env = jvm.env + + self.jvm = jvm + self.jni_env = jni_env + end + + protected fun ndk_jvm: JavaVM `{ return mnit_java_app->activity->vm; `} +end diff --git a/src/android_platform.nit b/src/android_platform.nit index 6dc34f8..6817d58 100644 --- a/src/android_platform.nit +++ b/src/android_platform.nit @@ -19,6 +19,7 @@ module android_platform import platform import abstract_compiler +import common_ffi redef class ToolContext redef fun platform_from_name(name) @@ -233,3 +234,14 @@ $(call import-module,android/native_app_glue) toolcontext.exec_and_check(["mv", "{android_project_root}/bin/{compiler.mainmodule.name}-debug.apk", outname]) end end + +redef class JavaClassTemplate + redef fun write_to_files(compdir) + do + var jni_path = "jni/nit_compile/" + if compdir.has_suffix(jni_path) then + var path = "{compdir.substring(0, compdir.length-jni_path.length)}/src/" + return super(path) + else return super + end +end -- 1.7.9.5