From 9a898f3b56a40f4751a03c4c18d5853d2af766f4 Mon Sep 17 00:00:00 2001 From: UnschooledGamer <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 13:15:01 +0530 Subject: [PATCH 1/9] feat: `disable_openjdk_installation` --- src/android-sdk/devcontainer-feature.json | 5 +++++ src/android-sdk/install.sh | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) 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..c60095f 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. From 9ab6d57f7d59766f80fb52476da132ebb6c6f817 Mon Sep 17 00:00:00 2001 From: UnschooledGamer <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 13:22:44 +0530 Subject: [PATCH 2/9] add: tests for it --- test/android-sdk/disabled_openjdk_installation.sh | 10 ++++++++++ test/android-sdk/scenarios.json | 10 ++++++++++ test/android-sdk/specific_sdk.sh | 1 + 3 files changed, 21 insertions(+) create mode 100644 test/android-sdk/disabled_openjdk_installation.sh 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..bb1ed08 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/base:ubuntu", + "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" From 0f03354d5eacc121dbd060987afa10e836e18af1 Mon Sep 17 00:00:00 2001 From: Emmanuel Lobo <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 14:24:58 +0530 Subject: [PATCH 3/9] Update scenarios.json --- test/android-sdk/scenarios.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/android-sdk/scenarios.json b/test/android-sdk/scenarios.json index bb1ed08..e188bbd 100644 --- a/test/android-sdk/scenarios.json +++ b/test/android-sdk/scenarios.json @@ -9,7 +9,7 @@ } }, "disabled_openjdk_installation": { - "image": "mcr.microsoft.com/devcontainers/base:ubuntu", + "image": "mcr.microsoft.com/java:dev-21-bookworm", "features": { "android-sdk": { "platform": "32", From 5dc5da30e9020aa54c15aaa433f60d2006d9033c Mon Sep 17 00:00:00 2001 From: Emmanuel Lobo <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 14:28:06 +0530 Subject: [PATCH 4/9] Update scenarios.json --- test/android-sdk/scenarios.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/android-sdk/scenarios.json b/test/android-sdk/scenarios.json index e188bbd..6420b5c 100644 --- a/test/android-sdk/scenarios.json +++ b/test/android-sdk/scenarios.json @@ -9,7 +9,7 @@ } }, "disabled_openjdk_installation": { - "image": "mcr.microsoft.com/java:dev-21-bookworm", + "image": "mcr.microsoft.com/devcontainers/java:dev-21-bookworm", "features": { "android-sdk": { "platform": "32", From df759733d2a6dd299e175d88ac1edb43cc712996 Mon Sep 17 00:00:00 2001 From: Emmanuel Lobo <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 14:49:32 +0530 Subject: [PATCH 5/9] Update install.sh --- src/android-sdk/install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/android-sdk/install.sh b/src/android-sdk/install.sh index c60095f..6ee224b 100755 --- a/src/android-sdk/install.sh +++ b/src/android-sdk/install.sh @@ -57,6 +57,9 @@ export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin" OG_JAVA_HOME=$JAVA_HOME # thanks https://askubuntu.com/questions/772235/how-to-find-path-to-java#comment2258200_1029326. + +java --version + export JAVA_HOME=$(dirname $(dirname $(update-alternatives --list javac 2>&1 | head -n 1))) # TODO: Update everything to future-proof for the link getting stale. From 2cb4c855c41b2cf4b2f9bc351e6650d80c2353bc Mon Sep 17 00:00:00 2001 From: Emmanuel Lobo <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 14:54:01 +0530 Subject: [PATCH 6/9] Update install.sh --- src/android-sdk/install.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/android-sdk/install.sh b/src/android-sdk/install.sh index 6ee224b..d114d9a 100755 --- a/src/android-sdk/install.sh +++ b/src/android-sdk/install.sh @@ -58,7 +58,9 @@ OG_JAVA_HOME=$JAVA_HOME # thanks https://askubuntu.com/questions/772235/how-to-find-path-to-java#comment2258200_1029326. -java --version +# checking the output as dirname is returning “.” + +update-alternatives --list javac 2>&1 | head -n 1 export JAVA_HOME=$(dirname $(dirname $(update-alternatives --list javac 2>&1 | head -n 1))) From 259c9d10660677db38a0c74cb3153703364ffbd1 Mon Sep 17 00:00:00 2001 From: Emmanuel Lobo <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 14:58:33 +0530 Subject: [PATCH 7/9] Update install.sh --- src/android-sdk/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/android-sdk/install.sh b/src/android-sdk/install.sh index d114d9a..5dca6f9 100755 --- a/src/android-sdk/install.sh +++ b/src/android-sdk/install.sh @@ -60,7 +60,7 @@ OG_JAVA_HOME=$JAVA_HOME # checking the output as dirname is returning “.” -update-alternatives --list javac 2>&1 | head -n 1 +javac --version export JAVA_HOME=$(dirname $(dirname $(update-alternatives --list javac 2>&1 | head -n 1))) From faf5523bb224630c0cd8e50eeb16679ce94a5367 Mon Sep 17 00:00:00 2001 From: Emmanuel Lobo <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 15:14:51 +0530 Subject: [PATCH 8/9] Update install.sh --- src/android-sdk/install.sh | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/android-sdk/install.sh b/src/android-sdk/install.sh index 5dca6f9..e127846 100755 --- a/src/android-sdk/install.sh +++ b/src/android-sdk/install.sh @@ -53,16 +53,20 @@ cd $ANDROID_HOME export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin" -# Save original JAVA_HOME. -OG_JAVA_HOME=$JAVA_HOME +# Only needed if OpenJDK is not disabled. +# checked as Java Feature installs it via sdkman causing “update-alternatives: error: no alternatives for javac” -# thanks https://askubuntu.com/questions/772235/how-to-find-path-to-java#comment2258200_1029326. +if [ $DISABLE_OPENJDK_INSTALLATION != "true" ]; then + LINUX_PACKAGES=("${LINUX_PACKAGES[@]}" "openjdk-17-jdk-headless") -# checking the output as dirname is returning “.” + # Save original JAVA_HOME. + OG_JAVA_HOME=$JAVA_HOME -javac --version + # 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))) + 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" From e5229d1b03b53953002dca40f21f20c0640f3861 Mon Sep 17 00:00:00 2001 From: Emmanuel Lobo <76094069+UnschooledGamer@users.noreply.github.com> Date: Sat, 2 May 2026 15:35:42 +0530 Subject: [PATCH 9/9] add: build-tools to PATH --- src/android-sdk/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/android-sdk/install.sh b/src/android-sdk/install.sh index e127846..b81677d 100755 --- a/src/android-sdk/install.sh +++ b/src/android-sdk/install.sh @@ -51,7 +51,7 @@ 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”