There are two variants of the image:
- JDK8 images are based on
adoptopenjdk/openjdk8:alpine
(JDK 8u282-b08) and uses the tag's suffix-jdk8
. - JDK11 images are based on
adoptopenjdk/openjdk11:alpine
(JDK 11.0.10+9) and uses the tag's suffix-jdk11
.
The recommended version is JDK8 if you are not using AGP v7.0.0+ or you are using DataBinding with a version of AGP prior to v7.0.0. Otherwise you must use JDK11 version because AGP v7.0.0+ will only work with version 11+ of the JDK.
If you want to use a JDK11 image with a version of AGP prior to v7, remember that JAXB is not included and you must add the following dependencies if using DataBinding:
// In Groovy
implementation "org.glassfish.jaxb:jaxb-runtime:2.3.3"
// or in Kotlin DSL
implementation("org.glassfish.jaxb:jaxb-runtime:2.3.3")
API level | JDK8 | JDK11 |
---|---|---|
Base Image | jdk8 , latest , latest-jdk8 |
jdk11 , latest-jdk11 |
Android 5.0 (21) | android-21 , android-21-jdk8 |
android-21-jdk11 |
Android 5.1 (22) | android-22 , android-22-jdk8 |
android-22-jdk11 |
Android 6.0 (23) | android-23 , android-23-jdk8 |
android-23-jdk11 |
Android 7.0 (24) | android-24 , android-24-jdk8 |
android-24-jdk11 |
Android 7.1 (25) | android-25 , android-25-jdk8 |
android-25-jdk11 |
Android 8.0 (26) | android-26 , android-26-jdk8 |
android-26-jdk11 |
Android 8.1 (27) | android-27 , android-27-jdk8 |
android-27-jdk11 |
Android 9.0 (28) | android-28 , android-28-jdk8 |
android-28-jdk11 |
Android 10 (29) | android-29 , android-29-jdk8 |
android-29-jdk11 |
Android 11 (30) | android-30 , android-30-jdk8 , latest , latest-jdk8 |
android-30-jdk11 , latest-jdk11 |
Android 12 (31) | android-S , android-S-jdk8 |
android-S-jdk11 |
π The tags
latest
andandroid-XX
will be using the JDK8 base image for one year after AGP 7.0.0 is released to avoid problems with currents CI/CD configurations. That date is yet TBD. After that date, if you want to continue to use JDK8, you must update your configuration with the corresponding tag.
β οΈ Android 12 is in a preview state. Preview versions are tagged differently using the letter of the version instead the API level.
Since January 1st 2021, new versions now include the date it was published so is possible to revert to a previous version. The versioning only applies to tags with the JDK version specified. The tag's format is: android-XX-jdkZZ-vYYYY.MM.DD
, where:
XX
is the API level.ZZ
is the version of the JDK.YYYY
is the year of the release version.MM
is the month of the year of the release version with leading zeros.DD
is the day of the month of the release version with leading zeros.
A valid example would be android-30-jdk11-v2021.01.01
. Here are listed all the versions.
π The versioning is not available for
alpine-android-base
.
See content of Android Base image
Path | Version | Description | Location |
---|---|---|---|
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
Use the following configuration in your Dockerfile. After that, you can install any Android package available. To install an Android package, include the following line on your Dockerfile:
RUN sdkmanager <list-of-packages>
If you want to install an Alpine package available. To install an Android package, include the following line on your Dockerfile:
RUN apk add --no-cache <list-of-packages>
See content of Android 21 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;21.1.2 | 21.1.2 | Android SDK Build-Tools | build-tools/21.1.2/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-21 | 2 | Android SDK Platform 21 | platforms/android-21/ |
See content of Android 22 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;22.0.1 | 22.0.1 | Android SDK Build-Tools | build-tools/22.0.1/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-22 | 2 | Android SDK Platform 22 | platforms/android-22/ |
See content of Android 23 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;23.0.3 | 23.0.3 | Android SDK Build-Tools | build-tools/23.0.3/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-23 | 3 | Android SDK Platform 23 | platforms/android-23/ |
See content of Android 24 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;24.0.3 | 24.0.3 | Android SDK Build-Tools | build-tools/24.0.3/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-24 | 2 | Android SDK Platform 24 | platforms/android-24/ |
See content of Android 25 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;25.0.3 | 25.0.3 | Android SDK Build-Tools | build-tools/25.0.3/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-25 | 3 | Android SDK Platform 25 | platforms/android-25/ |
See content of Android 26 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;26.0.3 | 26.0.3 | Android SDK Build-Tools | build-tools/26.0.3/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-26 | 2 | Android SDK Platform 26 | platforms/android-26/ |
See content of Android 27 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;27.0.3 | 27.0.3 | Android SDK Build-Tools | build-tools/27.0.3/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-27 | 3 | Android SDK Platform 27 | platforms/android-27/ |
See content of Android 28 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;28.0.3 | 28.0.3 | Android SDK Build-Tools | build-tools/28.0.3/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-28 | 6 | Android SDK Platform 28 | platforms/android-28/ |
See content of Android 29 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;29.0.3 | 29.0.3 | Android SDK Build-Tools | build-tools/29.0.3/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-29 | 5 | Android SDK Platform 29 | platforms/android-29/ |
See content of Android 30 image
Path | Version | Description | Location |
---|---|---|---|
build-tools;30.0.3 | 30.0.3 | Android SDK Build-Tools | build-tools/30.0.3/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-30 | 3 | Android SDK Platform 30 | platforms/android-30/ |
See content of Android 31 image (Preview)
Path | Version | Description | Location |
---|---|---|---|
build-tools;31.0.0-rc1 | 31.0.0-rc1 | Android SDK Build-Tools | build-tools/31.0.0-rc1/ |
extras;google;instantapps | 1.9.0 | Google Play Instant Development SDK | extras/google/instantapps/ |
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/ |
platform-tools | 31.0.0 | Android SDK Platform-Tools | platform-tools/ |
platforms;android-S | 1 | Android SDK Platform S (Preview) | platforms/android-S/ |
Because of the DockerHub rate limits, the image is now in three different containers registries:
- DockerHub: Base Image and Android Image.
- GitHub Container Registry: Base Image and Android Image.
- Quay: Base Image and Android Image.
Replace <tag>
with one of the current available tags.
You can pull a specific Docker image from DockerHub with the following command:
docker pull alvrme/alpine-android-base:<tag>
docker pull alvrme/alpine-android:<tag>
You can pull a specific Docker image from GitHub Container Registry with the following command:
docker pull ghcr.io/alvr/alpine-android-base:<tag>
docker pull ghcr.io/alvr/alpine-android:<tag>
You can pull a specific Docker image from Quay with the following command:
docker pull quay.io/alvr/alpine-android-base:<tag>
docker pull quay.io/alvr/alpine-android:<tag>
Replace <tag>
with one of the current available tags.
You can use the Docker images from DockerHub as a base image for creating a new one:
FROM alvrme/alpine-android-base:<tag>
FROM alvrme/alpine-android:<tag>
You can use the Docker images from GitHub Container Registry as a base image for creating a new one:
FROM ghcr.io/alvr/alpine-android-base:<tag>
FROM ghcr.io/alvr/alpine-android:<tag>
You can use the Docker images from Quay as a base image for creating a new one:
FROM quay.io/alvr/alpine-android-base:<tag>
FROM quay.io/alvr/alpine-android:<tag>
Replace <tag>
with one of the current available tags.
The command below will create a new container based on the specific image. It will open in the /home/android
directory and the various available commands in the PATH
will be able to be executed. Once the container is closed, it will be deleted. To keep the container after closing it, you have to remove --rm
from the command.
Run the container from the DockerHub image:
docker run --rm -it alvrme/alpine-android-base:<tag>
docker run --rm -it alvrme/alpine-android:<tag>
Run the container from the GitHub Container Registry image:
docker run --rm -it ghcr.io/alvr/alpine-android-base:<tag>
docker run --rm -it ghcr.io/alvr/alpine-android:<tag>
Run the container from the Quay image:
docker run --rm -it quay.io/alvr/alpine-android-base:<tag>
docker run --rm -it quay.io/alvr/alpine-android:<tag>
The base image also includes the extras
command that contains small utilities that are not installed by default, since their use is not widespread.
These extras are executed with the command extras <command>
and are the following
fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your application. Visit their documentation for more information.
This command allows you to install fastlane
. There are two variants:
extras fastlane
This command allows you to install the latest version of fastlane
. If you want to use a specific version, the command is as follows:
extras fastlane <version>
The main difference between Alpine Android and Alpine Android Base is that the first one includes the corresponding build-tools
and platforms;android
versions. All Alpine Android versions share 95% of the code. Using a base image with the common part makes it easier to maintain.