mirror of
https://github.com/encounter/flutter.git
synced 2026-03-30 11:10:35 -07:00
7b39269fe8
Bumps the Android build tools to 28.0.3 instead of 28.0.0 in the Dockerfile, since that is what flutter doctor wants.
110 lines
3.9 KiB
Docker
110 lines
3.9 KiB
Docker
# Flutter (https://flutter.dev) Developement Environment for Linux
|
|
# ===============================================================
|
|
#
|
|
# This environment passes all Linux Flutter Doctor checks and is sufficient
|
|
# for building Android applications and running Flutter tests.
|
|
#
|
|
# To build iOS applications, a Mac development environment is necessary.
|
|
#
|
|
# This includes applications and sdks that are needed only by the CI system
|
|
# for performing pushes to production, and so this image is quite a bit larger
|
|
# than strictly needed for just building Flutter apps.
|
|
|
|
FROM debian:stretch
|
|
MAINTAINER Flutter Developers <flutter-dev@googlegroups.com>
|
|
|
|
RUN apt-get update -y
|
|
RUN apt-get upgrade -y
|
|
|
|
# Install basics
|
|
RUN apt-get install -y --no-install-recommends \
|
|
git \
|
|
wget \
|
|
curl \
|
|
zip \
|
|
unzip \
|
|
ca-certificates \
|
|
gnupg
|
|
|
|
# Add nodejs repository to apt sources and install it.
|
|
ENV NODEJS_INSTALL="/opt/nodejs_install"
|
|
RUN mkdir -p "${NODEJS_INSTALL}"
|
|
RUN wget -q https://deb.nodesource.com/setup_10.x -O "${NODEJS_INSTALL}/nodejs_install.sh"
|
|
RUN bash "${NODEJS_INSTALL}/nodejs_install.sh"
|
|
|
|
# Install the rest of the dependencies.
|
|
RUN apt-get install -y --no-install-recommends \
|
|
locales \
|
|
golang \
|
|
ruby \
|
|
ruby-dev \
|
|
nodejs \
|
|
lib32stdc++6 \
|
|
libstdc++6 \
|
|
libglu1-mesa \
|
|
build-essential \
|
|
default-jdk-headless
|
|
|
|
# Install the Android SDK Dependency.
|
|
ENV ANDROID_SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"
|
|
ENV ANDROID_TOOLS_ROOT="/opt/android_sdk"
|
|
RUN mkdir -p "${ANDROID_TOOLS_ROOT}"
|
|
RUN mkdir -p ~/.android
|
|
# Silence warning.
|
|
RUN touch ~/.android/repositories.cfg
|
|
ENV ANDROID_SDK_ARCHIVE="${ANDROID_TOOLS_ROOT}/archive"
|
|
RUN wget --progress=dot:giga "${ANDROID_SDK_URL}" -O "${ANDROID_SDK_ARCHIVE}"
|
|
RUN unzip -q -d "${ANDROID_TOOLS_ROOT}" "${ANDROID_SDK_ARCHIVE}"
|
|
# Suppressing output of sdkmanager to keep log size down
|
|
# (it prints install progress WAY too often).
|
|
RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "tools" > /dev/null
|
|
RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "build-tools;28.0.3" > /dev/null
|
|
RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "platforms;android-28" > /dev/null
|
|
RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "platform-tools" > /dev/null
|
|
RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "extras;android;m2repository" > /dev/null
|
|
RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "extras;google;m2repository" > /dev/null
|
|
RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "patcher;v4" > /dev/null
|
|
RUN rm "${ANDROID_SDK_ARCHIVE}"
|
|
ENV PATH="${ANDROID_TOOLS_ROOT}/tools:${PATH}"
|
|
ENV PATH="${ANDROID_TOOLS_ROOT}/tools/bin:${PATH}"
|
|
# Silence warnings when accepting android licenses.
|
|
RUN mkdir -p ~/.android
|
|
RUN touch ~/.android/repositories.cfg
|
|
|
|
# Setup gradle
|
|
ENV GRADLE_ROOT="/opt/gradle"
|
|
RUN mkdir -p "${GRADLE_ROOT}"
|
|
ENV GRADLE_ARCHIVE="${GRADLE_ROOT}/gradle.zip"
|
|
ENV GRADLE_URL="http://services.gradle.org/distributions/gradle-4.4-bin.zip"
|
|
RUN wget --progress=dot:giga "$GRADLE_URL" -O "${GRADLE_ARCHIVE}"
|
|
RUN unzip -q -d "${GRADLE_ROOT}" "${GRADLE_ARCHIVE}"
|
|
ENV PATH="$GRADLE_ROOT/bin:$PATH"
|
|
|
|
# Add npm to path.
|
|
ENV PATH="/usr/bin:${PATH}"
|
|
RUN dpkg-query -L nodejs
|
|
# Install Firebase
|
|
# This is why we need nodejs installed.
|
|
RUN /usr/bin/npm --verbose install -g firebase-tools
|
|
|
|
# Install dashing
|
|
# This is why we need golang installed.
|
|
RUN mkdir -p /opt/gopath/bin
|
|
ENV GOPATH=/opt/gopath
|
|
ENV PATH="${GOPATH}/bin:${PATH}"
|
|
RUN go get -u github.com/technosophos/dashing
|
|
|
|
# Set locale to en_US
|
|
RUN locale-gen en_US "en_US.UTF-8" && dpkg-reconfigure locales
|
|
ENV LANG en_US.UTF-8
|
|
|
|
# Install coveralls and Firebase
|
|
# This is why we need ruby installed.
|
|
# Skip all the documentation (-N) since it's just on CI.
|
|
RUN gem install coveralls -N
|
|
RUN gem install bundler -N
|
|
# Install fastlane which is used on Linux to build and deploy Android
|
|
# builds to the Play Store.
|
|
RUN gem install fastlane -N
|
|
|