|
| 1 | +# Run with: |
| 2 | +# podman build -t scrcpy-builder . |
| 3 | + |
| 4 | +FROM debian:trixie |
| 5 | + |
| 6 | +ENV DEBIAN_FRONTEND=noninteractive |
| 7 | + |
| 8 | +RUN apt-get update \ |
| 9 | + && apt-get install -y --no-install-recommends \ |
| 10 | + sudo wget unzip gcc git pkg-config meson ninja-build libsdl2-dev \ |
| 11 | + libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev \ |
| 12 | + libswresample-dev libusb-1.0-0-dev openjdk-21-jdk |
| 13 | + |
| 14 | +RUN groupadd -g 1000 debian \ |
| 15 | + && useradd -m -u 1000 -g 1000 -s /bin/bash debian |
| 16 | +RUN echo "debian ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers |
| 17 | + |
| 18 | +ENV ANDROID_SDK_ROOT=/opt/android/sdk |
| 19 | +ENV CMDLINETOOLS_URL=https://dl.google.com/android/repository/commandlinetools-linux-13114758_latest.zip |
| 20 | +ENV CMDLINETOOLS_SHA256=7ec965280a073311c339e571cd5de778b9975026cfcbe79f2b1cdcb1e15317ee |
| 21 | + |
| 22 | +RUN wget -q "$CMDLINETOOLS_URL" -O cmdlinetools.zip \ |
| 23 | + && echo "$CMDLINETOOLS_SHA256 cmdlinetools.zip" | sha256sum -c |
| 24 | + |
| 25 | +RUN mkdir -p "$ANDROID_SDK_ROOT/tmp" \ |
| 26 | + && unzip cmdlinetools.zip -d "$ANDROID_SDK_ROOT/tmp" \ |
| 27 | + && mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" \ |
| 28 | + && mv "$ANDROID_SDK_ROOT/tmp/cmdline-tools" "$ANDROID_SDK_ROOT/cmdline-tools/latest" \ |
| 29 | + && rmdir "$ANDROID_SDK_ROOT/tmp" \ |
| 30 | + && rm cmdlinetools.zip |
| 31 | +# platform 36, but build-tools 35 for the current AGP version |
| 32 | +RUN yes | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --licenses \ |
| 33 | + && $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-36" "build-tools;35.0.0" |
| 34 | +RUN chown -R debian:debian $ANDROID_SDK_ROOT |
| 35 | + |
| 36 | +# For scrcpy build scripts |
| 37 | +ENV GRADLE_VERSION=8.14.3 |
| 38 | +ENV GRADLE_HOME=/opt/gradle-$GRADLE_VERSION |
| 39 | +ENV GRADLE_URL=https://services.gradle.org/distributions/gradle-$GRADLE_VERSION-bin.zip |
| 40 | +ENV GRADLE_SHA256=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531 |
| 41 | +ENV GRADLE=gradle |
| 42 | +ENV PATH=$GRADLE_HOME/bin:$PATH |
| 43 | + |
| 44 | +RUN wget -q "$GRADLE_URL" -O gradle.zip \ |
| 45 | + && echo "$GRADLE_SHA256 gradle.zip" | sha256sum -c |
| 46 | + |
| 47 | +RUN unzip gradle.zip -d /opt \ |
| 48 | + && rm gradle.zip |
| 49 | + |
| 50 | +USER debian |
| 51 | +WORKDIR /home/debian |
| 52 | + |
| 53 | +# Pre-download gradle dependencies for scrcpy |
| 54 | +RUN mkdir -p /home/debian/fake-scrcpy/app |
| 55 | +COPY fake.gradle /home/debian/fake-scrcpy/build.gradle |
| 56 | +COPY fake_app.gradle /home/debian/fake-scrcpy/app/build.gradle |
| 57 | +RUN printf "rootProject.name='dummy-android'\ninclude ':app'" > /home/debian/fake-scrcpy/settings.gradle \ |
| 58 | + && gradle -p /home/debian/fake-scrcpy dependencies androidDependencies --no-daemon \ |
| 59 | + && rm -rf /home/debian/fake-scrcpy |
0 commit comments