mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-12 21:06:43 +02:00
add support for building via a docker container [remote dev]
This commit is contained in:
15
.dockerignore
Normal file
15
.dockerignore
Normal file
@ -0,0 +1,15 @@
|
||||
LICENSE.md
|
||||
README.md
|
||||
analysis_options.yaml
|
||||
android
|
||||
assets
|
||||
build
|
||||
build.sh
|
||||
data
|
||||
docker
|
||||
fastlane
|
||||
lib
|
||||
pubspec.lock
|
||||
pubspec.yaml
|
||||
sign.sh
|
||||
test
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -49,3 +49,4 @@ app.*.map.json
|
||||
|
||||
# Custom
|
||||
TODO.txt
|
||||
data
|
84
docker/Dockerfile
Normal file
84
docker/Dockerfile
Normal file
@ -0,0 +1,84 @@
|
||||
FROM ubuntu:22.04
|
||||
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
ENV ANDROID_SDK_ROOT /opt/android-sdk-linux
|
||||
ENV PATH "${PATH}:/opt/flutter/bin:/root/.pub-cache/bin:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:/opt/android-sdk-linux/platform-tools"
|
||||
|
||||
ENV HOME=/root
|
||||
|
||||
# Prereqs
|
||||
RUN \
|
||||
apt-get update &&\
|
||||
apt-get install -y --no-install-recommends \
|
||||
bash \
|
||||
curl \
|
||||
file \
|
||||
git 2.x \
|
||||
unzip \
|
||||
xz-utils \
|
||||
zip \
|
||||
libglu1-mesa \
|
||||
libxi-dev \
|
||||
libxmu-dev \
|
||||
libglu1-mesa-dev \
|
||||
git-lfs \
|
||||
openssl \
|
||||
wget
|
||||
|
||||
# Build prereqs
|
||||
RUN \
|
||||
apt-get install -y \
|
||||
cmake curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback lib32stdc++6 python3 sed \
|
||||
cmake ninja-build build-essential libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev clang pkg-config libgtk-3-dev \
|
||||
liblzma-dev libmount-dev libblkid-dev libgcrypt20-dev libgpg-error-dev libssl-dev libpng-dev libjpeg-dev \
|
||||
libtiff-dev libgif-dev libgtk-3-dev
|
||||
|
||||
# Android SDK prequisites
|
||||
# https://developer.android.com/studio#command-tools
|
||||
RUN \
|
||||
apt-get install -y --no-install-recommends \
|
||||
git \
|
||||
git-lfs \
|
||||
openssl \
|
||||
wget \
|
||||
unzip
|
||||
# Android SDK
|
||||
RUN \
|
||||
wget --quiet https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/tools.zip && \
|
||||
mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools && \
|
||||
unzip -q /tmp/tools.zip -d ${ANDROID_SDK_ROOT}/cmdline-tools && \
|
||||
mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/latest && \
|
||||
rm -v /tmp/tools.zip && \
|
||||
mkdir -p /root/.android/ && touch /root/.android/repositories.cfg &&\
|
||||
apt-get install -y --no-install-recommends openjdk-17-jdk openjdk-17-jre &&\
|
||||
yes | sdkmanager --licenses &&\
|
||||
sdkmanager --update
|
||||
# Platform tools
|
||||
# Get latest with sdkmanager --list
|
||||
RUN sdkmanager --install "build-tools;33.0.1"
|
||||
RUN sdkmanager --install "ndk;26.3.11579264"
|
||||
RUN sdkmanager --install "cmake;3.31.4"
|
||||
RUN sdkmanager --install platform-tools
|
||||
RUN sdkmanager --install emulator
|
||||
RUN sdkmanager --install tools
|
||||
RUN sdkmanager --install "platforms;android-28"
|
||||
RUN sdkmanager --install "platforms;android-31"
|
||||
RUN sdkmanager --install "platforms;android-33"
|
||||
RUN sdkmanager --install "platforms;android-35"
|
||||
RUN sdkmanager --install "platforms;android-34"
|
||||
RUN sdkmanager --install "platforms;android-32"
|
||||
|
||||
# Flutter
|
||||
ARG DEV_UID=0
|
||||
RUN \
|
||||
wget --quiet https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.29.0-stable.tar.xz -O /tmp/flutter.tar.xz &&\
|
||||
mkdir -p /opt &&\
|
||||
cd /opt &&\
|
||||
tar xf /tmp/flutter.tar.xz &&\
|
||||
rm /tmp/flutter.tar.xz &&\
|
||||
git config --global --add safe.directory /opt/flutter &&\
|
||||
dart pub global activate cider &&\
|
||||
chown -R ${DEV_UID} /opt/flutter
|
||||
RUN flutter --disable-analytics
|
||||
RUN flutter upgrade
|
||||
RUN chmod a+w /opt/flutter/packages -R
|
21
docker/builder.sh
Executable file
21
docker/builder.sh
Executable file
@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
cd ${SCRIPT_DIR}/..
|
||||
mkdir -p ./data/home
|
||||
docker run \
|
||||
--rm \
|
||||
-ti \
|
||||
--net host \
|
||||
-v "${PWD}/../:${PWD}/../" \
|
||||
-w "${PWD}" \
|
||||
--name flutter-dev-obtainium \
|
||||
--user $(id -u) \
|
||||
-v ./data/home:/home/${USER} \
|
||||
-e USER=${USER} \
|
||||
-e HOME=/home/${USER} \
|
||||
-e ANDROID_USER_HOME=${HOME}/.android \
|
||||
-e GRADLE_USER_HOME=${HOME}/.gradle \
|
||||
-e PS1="${debian_chroot:+($debian_chroot)}${USER}@\h:\w\$ " \
|
||||
flutter-builder-obtainium
|
14
docker/mkbuilder.sh
Executable file
14
docker/mkbuilder.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
D=$(date +'%Y%m%d.%H%M%S%3N')
|
||||
|
||||
set -e
|
||||
|
||||
cd "${SCRIPT_DIR}/.."
|
||||
# Create the builder image
|
||||
docker build \
|
||||
-t flutter-builder-obtainium \
|
||||
-f ./docker/Dockerfile \
|
||||
--build-arg="DEV_UID=$(id -u)" \
|
||||
.
|
Reference in New Issue
Block a user