Компилируем Android приложения в Docker
Давно хотел научиться компилировать свои приложения для андроид без необходимости устанавливать и настраивать на компьютере кучи ненужного софта. В самом деле - на дворе двадцать первый век, у нас есть докер и нам совершенно не обязательно для сборки приложения устанавливать весь софт на рабочую станцию чтобы собрать приложение. Это можно сделать в докере.
Посидев пару вечеров, собрал простенький образ, который будет делать за меня всю черновую работу. Теперь, чтобы собрать любое приложение для android, достаточно выполнить вот такую команду из корня проекта:
docker run --rm -v ${PWD}:/var/app maxistar/android:latest bash \
-c "gradle build && gradle compileDebugSources"
Готовый apk файл будет сохранен в папку app/build/outputs/apk/debug/app-debug.apk - его можно сразу скопировать не телефон и установить его (не забудьте разрешить установку приложений из неизвестных источников).
Как был сделан этот образ? За основу взял образ Debian 9.
Установил Java 8 (Java 11 у меня не завелась если знаете как подружить gradle и java 11 поделитесь секретом)
apt-get update
apt-get -y install git wget unzip default-jdk
Для сборки нам нужен gradle установим его
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -P /tmp
unzip -d /opt/android /tmp/sdk-tools-linux-3859397.zip
Скачаем Android SDK:
wget https://services.gradle.org/distributions/gradle-6.8.3-bin.zip -P /tmp
unzip -d /opt/gradle /tmp/gradle-6.8.3-bin.zip
Еще нужно установить переменные окружения.
ENV ANDROID_SDK_ROOT=/opt/android ENV GRADLE_HOME=/opt/gradle/gradle-6.8.3 ENV PATH=${GRADLE_HOME}/bin:${ANDROID_SDK_ROOT}/tools/bin:${PATH}
Теперь нужно скачать инструменты для сборки android приложений.
sdkmanager --update
sdkmanager "build-tools;30.0.2" "platform-tools" "platforms;android-30"
sdkmanager --licenses
Готовый Dockerfile выглядит вот так:
FROM debian:9
MAINTAINER Max Starikov <maxim.starikov@gmail.com>
ENV ANDROID_SDK_ROOT=/opt/android
ENV GRADLE_HOME=/opt/gradle/gradle-6.8.3
ENV PATH=${GRADLE_HOME}/bin:${ANDROID_SDK_ROOT}/tools/bin:${PATH}
RUN apt-get update && apt-get -y install git wget unzip default-jdk
RUN wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -P /tmp && \
unzip -d /opt/android /tmp/sdk-tools-linux-3859397.zip && \
wget https://services.gradle.org/distributions/gradle-6.8.3-bin.zip -P /tmp && \
unzip -d /opt/gradle /tmp/gradle-6.8.3-bin.zip && \
sdkmanager --update && \
yes | sdkmanager --licenses && \
sdkmanager "build-tools;30.0.2" "platform-tools" "platforms;android-30" && \
yes | sdkmanager --licenses && \
mkdir /var/app
WORKDIR /var/app
Следует заметить, что образ довольно большой (примерно 850Mb) - и для его использования нужно быстрое интернет соединение, но зато, единожды скачав, скачивать повторно docker его больше не будет.
Образ доступен на docker hub. Исходник находится на github.
разрешены только теги br, font, span, p, strong, u, p, blockquote, a, div, img - остальные будут безжалостно удаляться
комментарии: