e745088f1f
Key, touch and joystick events will be passed directly from the UI thread to Godot, so they can benefit from agile input flushing. As another consequence of this new way of passing events, less Java object are created at runtime (`Runnable`), which is good since the garbage collector needs to run less. `AndroidInputHandler` is introduced to have a smaller cross-thread surface. `main_loop_request_go_back()` is removed in favor just inline calling `send_window_event()` at the most caller's convenience (i.e., leveraging the new `p_deferred`` parameter as appropriate). Lastly, `get_mouse_position()` and `get_mouse_button_state()` now just call through `Input` to avoid the need of sync of mouse data tracked on the UI thread.
66 lines
2 KiB
Python
66 lines
2 KiB
Python
#!/usr/bin/env python
|
|
|
|
Import("env")
|
|
|
|
android_files = [
|
|
"os_android.cpp",
|
|
"android_input_handler.cpp",
|
|
"file_access_android.cpp",
|
|
"audio_driver_opensl.cpp",
|
|
"dir_access_jandroid.cpp",
|
|
"thread_jandroid.cpp",
|
|
"net_socket_android.cpp",
|
|
"java_godot_lib_jni.cpp",
|
|
"java_class_wrapper.cpp",
|
|
"java_godot_wrapper.cpp",
|
|
"java_godot_view_wrapper.cpp",
|
|
"java_godot_io_wrapper.cpp",
|
|
"jni_utils.cpp",
|
|
"android_keys_utils.cpp",
|
|
"display_server_android.cpp",
|
|
"vulkan/vulkan_context_android.cpp",
|
|
]
|
|
|
|
env_android = env.Clone()
|
|
|
|
android_objects = []
|
|
for x in android_files:
|
|
android_objects.append(env_android.SharedObject(x))
|
|
|
|
env_thirdparty = env_android.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
thirdparty_obj = env_thirdparty.SharedObject("#thirdparty/misc/ifaddrs-android.cc")
|
|
android_objects.append(thirdparty_obj)
|
|
|
|
lib = env_android.add_shared_library("#bin/libgodot", [android_objects], SHLIBSUFFIX=env["SHLIBSUFFIX"])
|
|
|
|
# Needed to force rebuilding the platform files when the thirdparty code is updated.
|
|
env.Depends(lib, thirdparty_obj)
|
|
|
|
lib_arch_dir = ""
|
|
if env["android_arch"] == "armv7":
|
|
lib_arch_dir = "armeabi-v7a"
|
|
elif env["android_arch"] == "arm64v8":
|
|
lib_arch_dir = "arm64-v8a"
|
|
elif env["android_arch"] == "x86":
|
|
lib_arch_dir = "x86"
|
|
elif env["android_arch"] == "x86_64":
|
|
lib_arch_dir = "x86_64"
|
|
else:
|
|
print("WARN: Architecture not suitable for embedding into APK; keeping .so at \\bin")
|
|
|
|
if lib_arch_dir != "":
|
|
if env["target"] == "release":
|
|
lib_type_dir = "release"
|
|
else: # release_debug, debug
|
|
lib_type_dir = "debug"
|
|
|
|
out_dir = "#platform/android/java/lib/libs/" + lib_type_dir + "/" + lib_arch_dir
|
|
env_android.Command(
|
|
out_dir + "/libgodot_android.so", "#bin/libgodot" + env["SHLIBSUFFIX"], Move("$TARGET", "$SOURCE")
|
|
)
|
|
|
|
stl_lib_path = (
|
|
str(env["ANDROID_NDK_ROOT"]) + "/sources/cxx-stl/llvm-libc++/libs/" + lib_arch_dir + "/libc++_shared.so"
|
|
)
|
|
env_android.Command(out_dir + "/libc++_shared.so", stl_lib_path, Copy("$TARGET", "$SOURCE"))
|