From d71ef6a82a5d8c43c7a5e11bb24d3aef6254a20a 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. --- pythonforandroid/build.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pythonforandroid/build.py b/pythonforandroid/build.py index 81b9e309e8..2edc96230c 100644 --- a/pythonforandroid/build.py +++ b/pythonforandroid/build.py @@ -40,7 +40,11 @@ def get_ndk_sysroot(ndk_dir): 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')):