├── Dockerfile ├── README.md └── android-wait-for-emulator /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jdk 2 | MAINTAINER Cangol 3 | 4 | ENV SDK_HOME /usr/local 5 | 6 | RUN apt-get --quiet update --yes 7 | RUN apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 8 | RUN apt-get --quiet install --yes libqt5widgets5 usbutils 9 | 10 | # Gradle 11 | ENV GRADLE_VERSION 6.5 12 | ENV GRADLE_SDK_URL https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip 13 | RUN curl -sSL "${GRADLE_SDK_URL}" -o gradle-${GRADLE_VERSION}-bin.zip \ 14 | && unzip gradle-${GRADLE_VERSION}-bin.zip -d ${SDK_HOME} \ 15 | && rm -rf gradle-${GRADLE_VERSION}-bin.zip 16 | ENV GRADLE_HOME ${SDK_HOME}/gradle-${GRADLE_VERSION} 17 | ENV PATH ${GRADLE_HOME}/bin:$PATH 18 | 19 | # android sdk|build-tools|image 20 | ENV ANDROID_TARGET_SDK="android-30" \ 21 | ANDROID_BUILD_TOOLS="30.0.2" \ 22 | ANDROID_SDK_TOOLS="7583922" 23 | ENV ANDROID_SDK_URL https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip 24 | RUN curl -sSL "${ANDROID_SDK_URL}" -o android-sdk-linux.zip \ 25 | && unzip android-sdk-linux.zip -d android-sdk-linux \ 26 | && rm -rf android-sdk-linux.zip 27 | 28 | # Set ANDROID_HOME 29 | ENV ANDROID_HOME $PWD/android-sdk-linux 30 | ENV PATH ${ANDROID_HOME}/bin:$PATH 31 | 32 | # Update and install using sdkmanager 33 | RUN echo yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --licenses 34 | #RUN echo yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} --update 35 | RUN echo yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "tools" "platform-tools" "emulator" 36 | RUN echo yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "build-tools;${ANDROID_BUILD_TOOLS}" 37 | RUN echo yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "platforms;${ANDROID_TARGET_SDK}" 38 | RUN echo yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "extras;android;m2repository" "extras;google;google_play_services" "extras;google;m2repository" 39 | RUN echo yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2" 40 | RUN echo yes | $ANDROID_HOME/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROID_HOME} "extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2" 41 | 42 | ENV PATH ${SDK_HOME}/bin:$PATH 43 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # android-gradle 2 | [![android-gradle](http://dockeri.co/image/cangol/android-gradle)](https://hub.docker.com/r/cangol/android-gradle/) 3 | 4 | ## Included 5 | * OpenJDK 8 6 | * Git 7 | * Gradle 6.5 8 | * Android SDK (android-30) 9 | * Android Build-tools (30.0.2) 10 | * Android Support Libraries 11 | * Google Play Services 12 | 13 | ## Build image 14 | 15 | ```bash 16 | docker build -t cangol/android-gradle . 17 | ``` 18 | 19 | ## Push build version to repository 20 | 21 | ```bash 22 | docker push cangol/android-gradle 23 | ``` 24 | 25 | ## Usage 26 | 27 | ### GitLab CI 28 | 29 | This is what my .gitlab-ci.yml looks like: 30 | 31 | ```yaml 32 | image: cangol/android-gradle 33 | stages: 34 | - build 35 | 36 | build: 37 | stage: build 38 | script: 39 | - gradlew build 40 | only: 41 | - master 42 | 43 | ``` 44 | 45 | ### Without GitLab 46 | 47 | ```bash 48 | docker pull cangol/android-gradle 49 | ``` 50 | 51 | Change directory to your project directory, then run: 52 | 53 | ```bash 54 | docker run --tty --interactive --volume=$(pwd):/opt/workspace --workdir=/opt/workspace --rm cangol/android-gradle /bin/sh -c "./gradlew build" 55 | ``` 56 | -------------------------------------------------------------------------------- /android-wait-for-emulator: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Originally written by Ralf Kistner , but placed in the public domain 4 | 5 | set +e 6 | 7 | bootanim="" 8 | failcounter=0 9 | timeout_in_sec=360 10 | 11 | until [[ "$bootanim" =~ "stopped" ]]; do 12 | bootanim=`adb -e shell getprop init.svc.bootanim 2>&1 &` 13 | if [[ "$bootanim" =~ "device not found" || "$bootanim" =~ "device offline" 14 | || "$bootanim" =~ "running" ]]; then 15 | let "failcounter += 1" 16 | echo "Waiting for emulator to start" 17 | if [[ $failcounter -gt timeout_in_sec ]]; then 18 | echo "Timeout ($timeout_in_sec seconds) reached; failed to start emulator" 19 | exit 1 20 | fi 21 | fi 22 | sleep 1 23 | done 24 | 25 | echo "Emulator is ready" 26 | --------------------------------------------------------------------------------