[android_compat_fixes] added support for versioned Android 'cmdline-tools' (the 'tools' replacement)

Signed-off-by: AMZN-ScottR <24445312+AMZN-ScottR@users.noreply.github.com>
This commit is contained in:
AMZN-ScottR
2021-11-02 13:05:54 -07:00
parent d1805dbd1c
commit e532193459
2 changed files with 25 additions and 3 deletions
@@ -1548,17 +1548,32 @@ class AndroidSDKResolver(object):
self.version = LooseVersion(available_update_components[1])
self.available = available_update_components[2]
def __init__(self, android_sdk_path):
def __init__(self, android_sdk_path, command_line_tools_version):
self.android_sdk_path = android_sdk_path or os.environ.get(ANDROID_SDK_ENV_NAME)
if not self.android_sdk_path:
raise common.LmbrCmdError(f"Android SDK path not set or it was not passed into the command to generate the android project")
if not os.path.isdir(self.android_sdk_path):
raise common.LmbrCmdError(f"Android SDK path {self.android_sdk_path} is not valid")
sdk_root = pathlib.Path(self.android_sdk_path)
tools_path = sdk_root / 'cmdline-tools'
if tools_path.exists():
tools_path = tools_path / command_line_tools_version
if not tools_path.exists():
raise common.LmbrCmdError(f"The desired version of the Android 'cmdline-tools' ({command_line_tools_version}) is not detected")
else:
tools_path = sdk_root / 'tools'
ext = ''
if platform.system() == 'Windows':
self.sdk_manager_path = pathlib.Path(self.android_sdk_path) / 'tools' / 'bin' / 'sdkmanager.bat'
ext = '.bat'
else:
raise common.LmbrCmdError(f"This tool is not supported on the current platform {platform.system()}")
self.sdk_manager_path = tools_path / 'bin' / f'sdkmanager{ext}'
if not self.sdk_manager_path.is_file():
raise common.LmbrCmdError(f"Android SDK path {self.android_sdk_path} is not valid or complete. Missing {self.sdk_manager_path}")
@@ -102,6 +102,7 @@ def build_optional_signing_profile(store_file, store_password, key_alias, key_pa
ANDROID_SDK_ARGUMENT_NAME = '--android-sdk-path'
ANDROID_SDK_PLATFORM_ARGUMENT_NAME = '--android-sdk-platform'
ANDROID_SDK_PREFERRED_TOOL_VER = '--android-sdk-build-tool-version'
ANDROID_SDK_COMMAND_LINE_TOOLS_VER = '--android-sdk-command-line-tools-version'
ANDROID_NATIVE_API_LEVEL = '--android-native-api-level'
@@ -185,6 +186,11 @@ def main(args):
default=-1)
# Override arguments
parser.add_argument(ANDROID_SDK_COMMAND_LINE_TOOLS_VER,
default='latest',
help='The android SDK command line tools version.',
required=False)
parser.add_argument(ANDROID_SDK_PREFERRED_TOOL_VER,
help='The android SDK build tools version.',
required=False)
@@ -304,7 +310,8 @@ def main(args):
f"({android_gradle_plugin_version}).")
# Use the SDK Resolver to make sure the build tools and ndk
android_sdk = android_support.AndroidSDKResolver(android_sdk_path=parsed_args.get_argument(ANDROID_SDK_ARGUMENT_NAME))
android_sdk = android_support.AndroidSDKResolver(android_sdk_path=parsed_args.get_argument(ANDROID_SDK_ARGUMENT_NAME),
command_line_tools_version=parsed_args.get_argument(ANDROID_SDK_COMMAND_LINE_TOOLS_VER))
# If no SDK platform is provided, check for any installed one
if android_sdk_platform_version < 0: