X-Git-Url: http://nitlanguage.org diff --git a/src/platform/android.nit b/src/platform/android.nit index 78ba820..f4b04a6 100644 --- a/src/platform/android.nit +++ b/src/platform/android.nit @@ -34,6 +34,8 @@ end class AndroidPlatform super Platform + redef fun name do return "android" + redef fun supports_libgc do return true redef fun supports_libunwind do return false @@ -61,14 +63,16 @@ class AndroidToolchain do var android_project_root = android_project_root.as(not null) var project = toolcontext.modelbuilder.android_project_for(compiler.mainmodule) - var short_project_name = compiler.mainmodule.name + var short_project_name = compiler.mainmodule.name.replace("-", "_") var release = toolcontext.opt_release.value var app_name = project.name if app_name == null then app_name = compiler.mainmodule.name + if not release then app_name += " Debug" var app_package = project.java_package if app_package == null then app_package = "org.nitlanguage.{short_project_name}" + if not release then app_package += "_debug" var app_version = project.version if app_version == null then app_version = "1.0" @@ -136,12 +140,21 @@ class AndroidToolchain end end - ## Generate delagating makefile + ## Generate delegating makefile dir = "{android_project_root}/jni/" """ include $(call all-subdir-makefiles) """.write_to_file("{dir}/Android.mk") + # Gather ldflags for Android + var ldflags = new Array[String] + var platform_name = "android" + for mmodule in compiler.mainmodule.in_importation.greaters do + if mmodule.ldflags.keys.has(platform_name) then + ldflags.add_all mmodule.ldflags[platform_name] + end + end + ### generate makefile into "{compile_dir}/Android.mk" dir = compile_dir """ @@ -152,7 +165,7 @@ LOCAL_CFLAGS := -D ANDROID -D WITH_LIBGC LOCAL_MODULE := main LOCAL_SRC_FILES := \\ {{{cfiles.join(" \\\n")}}} -LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM -lz libgc.a +LOCAL_LDLIBS := {{{ldflags.join(" ")}}} libgc.a LOCAL_STATIC_LIBRARIES := android_native_app_glue png include $(BUILD_SHARED_LIBRARY) @@ -179,7 +192,8 @@ $(call import-module,android/native_app_glue) android:label="@string/app_name" android:hasCode="true" android:debuggable="{{{not release}}}" - {{{icon_declaration}}}> + {{{icon_declaration}}} + android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation"> @@ -289,6 +303,7 @@ $(call import-module,android/native_app_glue) redef fun compile_c_code(compiler, compile_dir) do var android_project_root = android_project_root.as(not null) + var short_project_name = compiler.mainmodule.name.replace("-", "_") var release = toolcontext.opt_release.value # Compile C code (and thus Nit) @@ -305,7 +320,7 @@ $(call import-module,android/native_app_glue) var outname = outfile(compiler.mainmodule) if release then - var apk_path = "{android_project_root}/bin/{compiler.mainmodule.name}-release-unsigned.apk" + var apk_path = "{android_project_root}/bin/{short_project_name}-release-unsigned.apk" # Sign APK var keystore_path= "KEYSTORE".environ @@ -335,7 +350,7 @@ $(call import-module,android/native_app_glue) toolcontext.exec_and_check(args, "Android project error") else # Move to the expected output path - args = ["mv", "{android_project_root}/bin/{compiler.mainmodule.name}-debug.apk", outname] + args = ["mv", "{android_project_root}/bin/{short_project_name}-debug.apk", outname] toolcontext.exec_and_check(args, "Android project error") end end