diff --git a/Dockerfile.builder b/Dockerfile.builder index a3a4307..f6b1bc6 100644 --- a/Dockerfile.builder +++ b/Dockerfile.builder @@ -78,11 +78,17 @@ RUN . "$CARGO_HOME/env" && cargo install tauri-cli --locked --version "^2" RUN mkdir -p "$ANDROID_HOME" /root/.android && \ printf '### User Sources for `android` cmd line tool ###\ncount=0\n' > /root/.android/repositories.cfg && \ wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/cmdline-tools.zip && \ - unzip -q /tmp/cmdline-tools.zip -d "$ANDROID_HOME" && \ + # The zip holds a single top-level cmdline-tools/, and sdkmanager insists on + # living in cmdline-tools/latest/ — it derives the SDK root from its own + # path and refuses to run from anywhere else. So unpack somewhere neutral + # and move that directory into place; unzipping straight into $ANDROID_HOME + # puts bin/ where latest/ has to go. + unzip -q /tmp/cmdline-tools.zip -d /tmp/cmdline-tools && \ rm /tmp/cmdline-tools.zip && \ - mkdir -p "$ANDROID_HOME/cmdline-tools/latest" && \ - mv "$ANDROID_HOME/cmdline-tools/cmdline-tools/"* "$ANDROID_HOME/cmdline-tools/latest/" && \ - rmdir "$ANDROID_HOME/cmdline-tools/cmdline-tools" + mkdir -p "$ANDROID_HOME/cmdline-tools" && \ + mv /tmp/cmdline-tools/cmdline-tools "$ANDROID_HOME/cmdline-tools/latest" && \ + rmdir /tmp/cmdline-tools && \ + test -x "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" # Licences up front so Gradle never blocks on a prompt in CI. RUN yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --sdk_root="$ANDROID_HOME" --licenses > /dev/null