# #android #docker #gitlab-ci #release
Вопрос:
Использование docker gitlab в качестве CICD для процесса выпуска приложения для Android
недавно мы интегрировали модуль Android, который поддерживает новейшие JAVA API, такие как stream ()
Как указано здесь https://developer.android.com/studio/write/java8-support я включил функцию удаления сахара в своем приложении
Среда в локальной JAVA_VERSION 11 GRADLE_VERSION 6.5
Если я создаю сборку выпуска локально, она хорошо работает с упомянутыми средами.
Но я выполняю процесс CI-CD, исключение во время выполнения выдается, когда приложение использует stream api
Похоже, что изображение docker не поддерживает настройки удаления
публикация файла docker здесь
FROM openjdk:11
ENV ANDROID_HOME /opt/android-sdk-linux
ENV SDK_HOME /opt
# Download Android SDK into $ANDROID_HOME
# You can find URL to the current version at: https://developer.android.com/studio/index.html
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools amp;amp;
wget -q https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip -O android_tools.zip amp;amp;
unzip android_tools.zip -d ${ANDROID_HOME}/cmdline-tools amp;amp;
mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/tools amp;amp;
rm android_tools.zip
ENV PATH ${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/cmdline-tools/tools/bin:${ANDROID_HOME}/platform-tools
# Download Gradle into $GRADLE_HOME
ENV GRADLE_VERSION 6.5
ENV GRADLE_SDK_URL https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip
RUN curl -sSL "${GRADLE_SDK_URL}" -o gradle-${GRADLE_VERSION}-bin.zip
amp;amp; unzip gradle-${GRADLE_VERSION}-bin.zip -d ${SDK_HOME}
amp;amp; rm -rf gradle-${GRADLE_VERSION}-bin.zip
ENV GRADLE_HOME ${SDK_HOME}/gradle-${GRADLE_VERSION}
ENV PATH ${GRADLE_HOME}/bin:$PATH
# Accept Android SDK licenses
RUN yes | sdkmanager --licenses
RUN touch /root/.android/repositories.cfg
# Platform tools
RUN sdkmanager "emulator" "tools" "platform-tools"
# SDKs
# Please keep these in descending order!
# The `yes` is for accepting all non-standard tool licenses.
RUN yes | sdkmanager --update --channel=3
# Please keep all sections in descending order!
RUN yes | sdkmanager
"platforms;android-30"
"platforms;android-29"
"build-tools;30.0.2"
"build-tools;29.0.2"
"extras;android;m2repository"
"extras;google;m2repository"
"extras;google;google_play_services"
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2"
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.1"
"add-ons;addon-google_apis-google-23"
"add-ons;addon-google_apis-google-22"
# Download and install Google Cloud SDK
RUN wget -nv https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz
RUN tar -zxvf google-cloud-sdk.tar.gz amp;amp; ./google-cloud-sdk/install.sh --usage-reporting=false --path-update=true
# Adding the package path to local
ENV GCLOUD_HOME "/google-cloud-sdk"
ENV PATH "$PATH:${GCLOUD_HOME}/bin"
RUN echo y | gcloud --quiet components update
RUN echo y | gcloud components install beta
в чем может быть причина, поскольку
Исключения во время выполнения
11-10 11:44:43.419 E/AndroidRuntime(14146): java.lang.NoClassDefFoundError: Failed resolution of: Lj$/util/Collection$-EL;
Комментарии:
1. отредактирован вопрос @sytech.