summaryrefslogtreecommitdiffstats
path: root/platform/android/detect.py
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/detect.py')
-rw-r--r--platform/android/detect.py33
1 files changed, 16 insertions, 17 deletions
diff --git a/platform/android/detect.py b/platform/android/detect.py
index a417ef454b..cbd6144182 100644
--- a/platform/android/detect.py
+++ b/platform/android/detect.py
@@ -2,11 +2,11 @@ import os
import sys
import platform
import subprocess
-
+from methods import print_warning, print_error
from typing import TYPE_CHECKING
if TYPE_CHECKING:
- from SCons import Environment
+ from SCons.Script.SConscript import SConsEnvironment
def get_name():
@@ -28,6 +28,7 @@ def get_opts():
"android-" + str(get_min_target_api()),
),
BoolVariable("store_release", "Editor build for Google Play Store (for official builds only)", False),
+ BoolVariable("generate_apk", "Generate an APK/AAB after building Android library by calling Gradle", False),
]
@@ -50,7 +51,7 @@ def get_min_sdk_version(platform):
return int(platform.split("-")[1])
-def get_android_ndk_root(env):
+def get_android_ndk_root(env: "SConsEnvironment"):
return env["ANDROID_HOME"] + "/ndk/" + get_ndk_version()
@@ -68,13 +69,13 @@ def get_flags():
return [
("arch", "arm64"), # Default for convenience.
("target", "template_debug"),
+ ("supported", ["mono"]),
]
# Check if Android NDK version is installed
# If not, install it.
-def install_ndk_if_needed(env):
- print("Checking for Android NDK...")
+def install_ndk_if_needed(env: "SConsEnvironment"):
sdk_root = env["ANDROID_HOME"]
if not os.path.exists(get_android_ndk_root(env)):
extension = ".bat" if os.name == "nt" else ""
@@ -85,29 +86,27 @@ def install_ndk_if_needed(env):
ndk_download_args = "ndk;" + get_ndk_version()
subprocess.check_call([sdkmanager, ndk_download_args])
else:
- print("Cannot find " + sdkmanager)
- print(
- "Please ensure ANDROID_HOME is correct and cmdline-tools are installed, or install NDK version "
- + get_ndk_version()
- + " manually."
+ print_error(
+ f'Cannot find "{sdkmanager}". Please ensure ANDROID_HOME is correct and cmdline-tools'
+ f'are installed, or install NDK version "{get_ndk_version()}" manually.'
)
- sys.exit()
+ sys.exit(255)
env["ANDROID_NDK_ROOT"] = get_android_ndk_root(env)
-def configure(env: "Environment"):
+def configure(env: "SConsEnvironment"):
# Validate arch.
supported_arches = ["x86_32", "x86_64", "arm32", "arm64"]
if env["arch"] not in supported_arches:
- print(
+ print_error(
'Unsupported CPU architecture "%s" for Android. Supported architectures are: %s.'
% (env["arch"], ", ".join(supported_arches))
)
- sys.exit()
+ sys.exit(255)
if get_min_sdk_version(env["ndk_platform"]) < get_min_target_api():
- print(
- "WARNING: minimum supported Android target api is %d. Forcing target api %d."
+ print_warning(
+ "Minimum supported Android target api is %d. Forcing target api %d."
% (get_min_target_api(), get_min_target_api())
)
env["ndk_platform"] = "android-" + str(get_min_target_api())
@@ -200,7 +199,7 @@ def configure(env: "Environment"):
env.Append(LIBS=["OpenSLES", "EGL", "android", "log", "z", "dl"])
if env["vulkan"]:
- env.Append(CPPDEFINES=["VULKAN_ENABLED"])
+ env.Append(CPPDEFINES=["VULKAN_ENABLED", "RD_ENABLED"])
if not env["use_volk"]:
env.Append(LIBS=["vulkan"])