From 8a192062a8b7ecd04e19b2d3b96aabba9ec782bb Mon Sep 17 00:00:00 2001 From: Dan Nicholson Date: Fri, 13 May 2022 14:59:42 -0600 Subject: [PATCH] Prefer avdmanager from cmdline-tools The Android SDK tools are deprecated in favor of the command line tools. Trying to use avdmanager from the deprecated tools fails on OpenJDK 11 with since it can't find the `javax/xml/bind/annotation/XmlSchema` class. Try `cmdline-tools/latest/bin/avdmanager` first. (cherry picked from commit d71ef6a82a5d8c43c7a5e11bb24d3aef6254a20a) --- pythonforandroid/build.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pythonforandroid/build.py b/pythonforandroid/build.py index b76deb21a8..547e2fd12a 100644 --- a/pythonforandroid/build.py +++ b/pythonforandroid/build.py @@ -113,7 +113,11 @@ def select_and_check_toolchain_version(sdk_dir, ndk_dir, arch, ndk_sysroot_exist def get_targets(sdk_dir): - if exists(join(sdk_dir, 'tools', 'bin', 'avdmanager')): + if exists(join(sdk_dir, 'cmdline-tools', 'latest', 'bin', 'avdmanager')): + avdmanager = sh.Command(join(sdk_dir, 'cmdline-tools', 'latest', 'bin', 'avdmanager')) + targets = avdmanager('list', 'target').stdout.decode('utf-8').split('\n') + + elif exists(join(sdk_dir, 'tools', 'bin', 'avdmanager')): avdmanager = sh.Command(join(sdk_dir, 'tools', 'bin', 'avdmanager')) targets = avdmanager('list', 'target').stdout.decode('utf-8').split('\n') elif exists(join(sdk_dir, 'tools', 'android')):