diff --git a/src/android-sdk/devcontainer-feature.json b/src/android-sdk/devcontainer-feature.json index 2557a2d..84cadb7 100644 --- a/src/android-sdk/devcontainer-feature.json +++ b/src/android-sdk/devcontainer-feature.json @@ -28,6 +28,11 @@ "type": "string", "default": "", "description": "extra packages, split by space" + }, + "disable_openjdk_installation": { + "type": "boolean", + "default": false, + "description": "Disables the Installation of OpenJDK by this feature." } }, "installsAfter": ["ghcr.io/devcontainers/features/common-utils", "ghcr.io/akhildevelops/devcontainer-features/apt"] diff --git a/src/android-sdk/install.sh b/src/android-sdk/install.sh index c87ee37..b81677d 100755 --- a/src/android-sdk/install.sh +++ b/src/android-sdk/install.sh @@ -21,8 +21,14 @@ if [ -n "$EXTRA_PACKAGES" ]; then PACKAGES=("${PACKAGES[@]}" "${extra[@]}") fi +LINUX_PACKAGES=("unzip" "wget" "usbutils") + +if [ $DISABLE_OPENJDK_INSTALLATION != "true" ]; then + LINUX_PACKAGES=("${LINUX_PACKAGES[@]}" "openjdk-17-jdk-headless") +fi + DEBIAN_FRONTEND="noninteractive" sudo apt update && - sudo apt install --no-install-recommends -y openjdk-17-jdk-headless unzip wget usbutils && + sudo apt install --no-install-recommends -y "${LINUX_PACKAGES[@]}" && apt clean # Prepare install folder. @@ -45,13 +51,22 @@ shopt -u dotglob cd $ANDROID_HOME -export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin" +export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/build-tools/$BUILD_TOOLS" + +# Only needed if OpenJDK is not disabled. +# checked as Java Feature installs it via sdkman causing “update-alternatives: error: no alternatives for javac” -# Save original JAVA_HOME. -OG_JAVA_HOME=$JAVA_HOME +if [ $DISABLE_OPENJDK_INSTALLATION != "true" ]; then + LINUX_PACKAGES=("${LINUX_PACKAGES[@]}" "openjdk-17-jdk-headless") -# thanks https://askubuntu.com/questions/772235/how-to-find-path-to-java#comment2258200_1029326. -export JAVA_HOME=$(dirname $(dirname $(update-alternatives --list javac 2>&1 | head -n 1))) + # Save original JAVA_HOME. + OG_JAVA_HOME=$JAVA_HOME + + # thanks https://askubuntu.com/questions/772235/how-to-find-path-to-java#comment2258200_1029326. + + export JAVA_HOME=$(dirname $(dirname $(update-alternatives --list javac 2>&1 | head -n 1))) + +fi # TODO: Update everything to future-proof for the link getting stale. # yes | sdkmanager "cmdline-tools;latest" diff --git a/test/android-sdk/disabled_openjdk_installation.sh b/test/android-sdk/disabled_openjdk_installation.sh new file mode 100644 index 0000000..fb63860 --- /dev/null +++ b/test/android-sdk/disabled_openjdk_installation.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -e + +source dev-container-features-test-lib + +check "execute command" bash -c "java --version" +check "execute command" bash -c "adb --version" +check "execute command" bash -c "sdkmanager --list_installed" + +reportResults diff --git a/test/android-sdk/scenarios.json b/test/android-sdk/scenarios.json index a979fae..6420b5c 100644 --- a/test/android-sdk/scenarios.json +++ b/test/android-sdk/scenarios.json @@ -7,5 +7,15 @@ "extra_packages": "ndk;25.2.9519653 sources;android-32" } } + }, + "disabled_openjdk_installation": { + "image": "mcr.microsoft.com/devcontainers/java:dev-21-bookworm", + "features": { + "android-sdk": { + "platform": "32", + "extra_packages": "ndk;25.2.9519653 sources;android-32", + "disable_openjdk_installation": "true" + } + } } } diff --git a/test/android-sdk/specific_sdk.sh b/test/android-sdk/specific_sdk.sh index 996b0da..fb63860 100755 --- a/test/android-sdk/specific_sdk.sh +++ b/test/android-sdk/specific_sdk.sh @@ -3,6 +3,7 @@ set -e source dev-container-features-test-lib +check "execute command" bash -c "java --version" check "execute command" bash -c "adb --version" check "execute command" bash -c "sdkmanager --list_installed"