|
1 | | -FROM eclipse-temurin:17-jdk |
| 1 | +# Android Agent Docker Image |
| 2 | +# |
| 3 | +# Base: Ubuntu 24.04 (noble) with glibc 2.39 |
| 4 | +# Required for core-crypto native binaries which need glibc 2.38+ |
| 5 | +# |
| 6 | +# Build: |
| 7 | +# docker build -t android-agent:latest . |
| 8 | +# |
| 9 | +# Test: |
| 10 | +# docker run --rm android-agent:latest ldd --version | head -1 |
| 11 | +# # Should show: GLIBC 2.39 |
| 12 | + |
| 13 | +FROM eclipse-temurin:17-jdk-noble |
2 | 14 |
|
3 | 15 | RUN apt-get clean && \ |
4 | 16 | rm -rf /var/lib/apt/lists/* && \ |
5 | 17 | apt-get update && \ |
6 | | - apt-get install -yq unzip libc6 libstdc++6 zlib1g libncurses5 build-essential libssl-dev ruby ruby-dev --no-install-recommends docker.io vim git && \ |
| 18 | + apt-get install -yq \ |
| 19 | + unzip \ |
| 20 | + libc6 \ |
| 21 | + libstdc++6 \ |
| 22 | + zlib1g \ |
| 23 | + libncurses6 \ |
| 24 | + build-essential \ |
| 25 | + libssl-dev \ |
| 26 | + ruby \ |
| 27 | + ruby-dev \ |
| 28 | + docker.io \ |
| 29 | + vim \ |
| 30 | + git \ |
| 31 | + wget \ |
| 32 | + --no-install-recommends && \ |
7 | 33 | apt-get clean |
8 | 34 |
|
9 | 35 | RUN gem install bundler |
10 | 36 |
|
11 | | -# Cleaning |
12 | | -RUN apt-get clean |
13 | | - |
14 | 37 | ARG USER=android-agent |
15 | 38 | ARG USER_ID=1000 |
16 | 39 | ARG GROUP_ID=1000 |
17 | | -RUN useradd -m ${USER} --uid=${USER_ID} |
| 40 | +RUN useradd -m ${USER} --uid=${USER_ID} --non-unique || true |
18 | 41 | USER ${USER_ID}:${GROUP_ID} |
19 | 42 | WORKDIR /home/${USER} |
20 | | -ENV HOME /home/${USER} |
| 43 | +ENV HOME=/home/${USER} |
21 | 44 |
|
22 | | -# Download and untar Android SDK tools |
23 | | -RUN mkdir -p /home/${USER}/android-sdk-linux && \ |
24 | | - wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip -O tools.zip && \ |
25 | | - unzip tools.zip -d /home/${USER}/android-sdk && \ |
26 | | - rm tools.zip |
| 45 | +# Download Android cmdline-tools |
| 46 | +RUN mkdir -p /home/${USER}/android-sdk/cmdline-tools && \ |
| 47 | + wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O cmdline-tools.zip && \ |
| 48 | + unzip -q cmdline-tools.zip && \ |
| 49 | + mv cmdline-tools /home/${USER}/android-sdk/cmdline-tools/latest && \ |
| 50 | + rm cmdline-tools.zip |
27 | 51 |
|
28 | | -# Download and untar Android NDK tools |
29 | | -ENV ANDROID_NDK_HOME /home/${USER}/android-ndk |
30 | | -ENV ANDROID_NDK_VERSION r22b |
| 52 | +# Download Android NDK |
| 53 | +ENV ANDROID_NDK_HOME=/home/${USER}/android-ndk |
| 54 | +ENV ANDROID_NDK_VERSION=r27b |
31 | 55 | RUN mkdir /home/${USER}/android-ndk-tmp && \ |
32 | 56 | cd /home/${USER}/android-ndk-tmp && \ |
33 | | - wget -q https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip && \ |
34 | | -# uncompress |
35 | | - unzip -q android-ndk-${ANDROID_NDK_VERSION}-linux-x86_64.zip && \ |
36 | | -# move to its final location |
| 57 | + wget -q https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux.zip && \ |
| 58 | + unzip -q android-ndk-${ANDROID_NDK_VERSION}-linux.zip && \ |
37 | 59 | mv ./android-ndk-${ANDROID_NDK_VERSION} ${ANDROID_NDK_HOME} && \ |
38 | | -# remove temp dir |
39 | | - cd ${ANDROID_NDK_HOME} && \ |
40 | 60 | rm -rf /home/${USER}/android-ndk-tmp |
41 | 61 |
|
42 | | -# Download latest cmdline-tools to fix the sdkmanager jdk11 incompatibilities |
43 | | -RUN mkdir /home/${USER}/cmdline-tools-tmp && \ |
44 | | - cd /home/${USER}/cmdline-tools-tmp && \ |
45 | | - wget https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip && \ |
46 | | -# uncompress |
47 | | - unzip commandlinetools-linux-7583922_latest.zip && \ |
48 | | -# hackytrick as google is stupid |
49 | | - mkdir /home/${USER}/android-sdk/cmdline-tools/ && \ |
50 | | -# now copy the cmdlone-tools folder as the actual tools folder |
51 | | - mv cmdline-tools /home/${USER}/android-sdk/cmdline-tools/tools && \ |
52 | | -# remove the temp folder |
53 | | - cd /home/${USER} && \ |
54 | | - rm -rf /home/${USER}/cmdline-tools-tmp |
55 | | - |
56 | | -# Set environment variable |
57 | | -ENV ANDROID_HOME /home/${USER}/android-sdk |
| 62 | +ENV ANDROID_HOME=/home/${USER}/android-sdk |
58 | 63 | ENV ANDROID_SDK=${ANDROID_HOME} |
59 | | -ENV PATH ${ANDROID_HOME}/cmdline-tools/tools:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator:${ANDROID_HOME}/cmdline-tools/tools/bin:$ANDROID_NDK_HOME:$PATH |
60 | | - |
61 | | -#define the values to install/setup via the sdk manager |
62 | | -ARG BUILD_TOOLS_VERSION=30.0.2 |
63 | | -ARG PLATFORMS_VERSION=android-29 |
64 | | -ARG ARCHITECTURE=x86 |
65 | | - |
66 | | -# Make license agreement |
67 | | -RUN yes | $ANDROID_HOME/cmdline-tools/tools/bin/sdkmanager --licenses |
| 64 | +ENV PATH=${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator:${ANDROID_NDK_HOME}:${PATH} |
68 | 65 |
|
69 | | -# Update and install using sdkmanager |
70 | | -RUN $ANDROID_HOME/cmdline-tools/tools/bin/sdkmanager "tools" "platform-tools" "build-tools;${BUILD_TOOLS_VERSION}" "platforms;${PLATFORMS_VERSION}" "system-images;${PLATFORMS_VERSION};default;${ARCHITECTURE}" "extras;android;m2repository" "extras;google;m2repository" |
| 66 | +# Accept licenses and install SDK components |
| 67 | +ARG BUILD_TOOLS_VERSION=35.0.0 |
| 68 | +ARG PLATFORMS_VERSION=android-35 |
| 69 | +ARG ARCHITECTURE=x86_64 |
71 | 70 |
|
72 | | -# uncomment if you need to run the docker image standalone for testing purpose |
73 | | -#CMD tail -f /dev/null |
| 71 | +RUN yes | sdkmanager --licenses && \ |
| 72 | + sdkmanager "platform-tools" "build-tools;${BUILD_TOOLS_VERSION}" "platforms;${PLATFORMS_VERSION}" \ |
| 73 | + "system-images;${PLATFORMS_VERSION};default;${ARCHITECTURE}" \ |
| 74 | + "extras;android;m2repository" "extras;google;m2repository" |
0 commit comments