From: Alexis Laferrière Date: Mon, 16 Mar 2015 19:07:03 +0000 (-0400) Subject: lib/android: the dalvik module is higher in the importation hierarchy X-Git-Tag: v0.7.3~21^2~10 X-Git-Url: http://nitlanguage.org lib/android: the dalvik module is higher in the importation hierarchy Signed-off-by: Alexis Laferrière --- diff --git a/lib/android/dalvik.nit b/lib/android/dalvik.nit index ffb5c83..48603dc 100644 --- a/lib/android/dalvik.nit +++ b/lib/android/dalvik.nit @@ -17,23 +17,25 @@ # Java related services specific to Android and its Dalvik VM module dalvik -import native_app_glue +import activities + +redef class App + # The main Java Activity of this application + fun native_activity: NativeActivity is abstract +end extern class JavaClassLoader in "Java" `{java.lang.ClassLoader`} super JavaObject end redef class Sys - # Get the running JVM - redef fun create_default_jvm - do - var jvm = app.native_app_glue.ndk_native_activity.vm - var jni_env = jvm.attach_current_thread - if jni_env.address_is_null then jni_env = jvm.env + # We cannot create a JVM on Android + # + # This method is not reachable on this platform anyway. + # `Sys::jvm` is implemented by the main activity modules. + redef fun create_default_jvm do abort - self.jvm = jvm - self.jni_env = jni_env - end + redef fun jni_env do return jvm.attach_current_thread private var class_loader: nullable JavaObject = null private var class_loader_method: nullable JMethodID = null @@ -41,7 +43,7 @@ redef class Sys do var class_loader = self.class_loader if class_loader == null then - find_class_loader(app.native_app_glue.ndk_native_activity.java_native_activity) + find_class_loader app.native_activity class_loader = self.class_loader assert class_loader != null end diff --git a/lib/android/native_app_glue.nit b/lib/android/native_app_glue.nit index 31e5430..e713467 100644 --- a/lib/android/native_app_glue.nit +++ b/lib/android/native_app_glue.nit @@ -40,7 +40,7 @@ module native_app_glue is ldflags "-landroid" import platform import log -import activities +import dalvik in "C header" `{ #include @@ -123,6 +123,10 @@ extern class NativeNativeActivity in "Java" `{ android.app.NativeActivity `} super NativeActivity end +redef class Sys + redef fun jvm do return app.native_app_glue.ndk_native_activity.vm +end + redef class App redef fun setup do @@ -135,8 +139,7 @@ redef class App # The underlying implementation using the Android native_app_glue framework fun native_app_glue: NativeAppGlue `{ return native_app_glue_data; `} - # The main Java Activity of this application - fun native_activity: NativeActivity do return native_app_glue.ndk_native_activity.java_native_activity + redef fun native_activity do return native_app_glue.ndk_native_activity.java_native_activity # Set `native_app_glue` command handler to our C implementation which # will callback self.