mirror of
https://github.com/godotengine/godot.git
synced 2024-11-28 23:22:38 +00:00
45c2a7159e
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 `notification()` on the `MainLoop` at the most caller's convenience. Lastly, `get_mouse_position()` and `get_mouse_button_state()` now just call through `InputDefault` to avoid the need of sync of mouse data tracked on the UI thread.
65 lines
2.0 KiB
Python
65 lines
2.0 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_io_wrapper.cpp",
|
|
"jni_utils.cpp",
|
|
"android_keys_utils.cpp",
|
|
"plugin/godot_plugin_jni.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"))
|