Ошибка компиляции Ionic 4 с Angular 7 в Docker - PullRequest
1 голос
/ 24 мая 2019

Ошибка при компиляции Ionic 4 с Angular 7 в Docker

Мне нужно скомпилировать проект с Ionic 4 и Angular 7 в Docker.

Я делаю следующие шаги:

  1. Я создал образ вручную с помощью Java JDK версии 8, следуя статье Как установить Oracle Java 12/11/8 в Ubuntu 18.04 .

Я беру образ ubuntu: 18.04 в качестве базы и запускаю контейнер

    #in the folder /volumen is the file jdk-8u211-linux-x64.tar.gz 
    docker run -it -v /volumen:/volumen --name ubuntu_java ubuntu:18.04 /bin/bash

Инструкция по установке jdk

    apt-get update
    apt-get install -y git wget curl unzip build-essential gcc make apt-utils rsync
    tar -zxvf jdk-*
    mv jdk* /usr/
    update-alternatives --install /usr/bin/java java /usr/jdk1.8.*/bin/java 3

и я сохраняю контейнер как изображение с тегом java: jdk8.

docker commit --change "ENV PATH $PATH:/usr/jdk1.8.0_211/bin" --change "ENV JAVA_HOME /usr/jdk1.8.0_211 ubuntu_java java:jdk8
  1. Создание изображения с использованием java: jdk8 в качестве базы и тега ionic-android: ubuntu.
FROM java:jdk8

ENV DEBIAN_FRONTEND=noninteractive \
    ANDROID_HOME=/opt/android-sdk-linux \
    NODE_VERSION=10.15.3 \
    NPM_VERSION=6.9.0 \
    IONIC_VERSION=4.12.0 \
    CORDOVA_VERSION=9.0.0 \
    YARN_VERSION=1.16.0 \
    GRADLE_VERSION=5.4.1

# Install Node
RUN curl --retry 3 -SLO "http://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" && \
    tar -xzf "node-v$NODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 && \
    rm "node-v$NODE_VERSION-linux-x64.tar.gz"

# Install ionic
RUN npm install -g npm@"$NPM_VERSION" && \
    npm install -g cordova@"$CORDOVA_VERSION" ionic@"$IONIC_VERSION" && \
    npm cache clear --force && \
    gem install sass

#ANDROID STUFF
RUN echo ANDROID_HOME="${ANDROID_HOME}" >> /etc/environment && \
    dpkg --add-architecture i386 && \
    apt-get update && \
    apt-get install -y --force-yes expect ant wget zipalign libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 qemu-kvm kmod && \
    apt-get clean && \
    apt-get autoclean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# Install Android SDK
RUN cd /opt && \
    wget --output-document=android-sdk.tgz --quiet http://dl.google.com/android/android-sdk_r24.0.2-linux.tgz && \
    tar xzf android-sdk.tgz && \
    rm -f android-sdk.tgz && \
    chown -R root. /opt


# Install Gradle
ENV GRADLE_VERSION=5.4.1 \
    GRADLE_URL=https://services.gradle.org/distributions/gradle-5.4.1-bin.zip \
    GRADLE_HOME=/opt/gradle \
    GRADLE_OPTS="-Dorg.gradle.daemon=false"

ENV PATH=$PATH:$GRADLE_HOME/gradle-$GRADLE_VERSION/bin

RUN mkdir -p $GRADLE_HOME && \
    wget -q -O gradle.zip $GRADLE_URL && \
    unzip -d $GRADLE_HOME gradle.zip && \
    rm gradle.zip

# Install Android SDK
ENV ANDROID_SDK_BUILD_TOOLS_VERSION=28.0.3 \
    ANDROID_SDK_PLATFORM_VERSION=28 \
    ANDROID_SDK_URL=https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip \
    ANDROID_SDK_HOME=/opt/android \
    ANDROID_SDK_ROOT=/opt/android \
    ANDROID_HOME=/opt/android/sdk


ENV ANDROID_SDK_PACKAGES=" \
        tools \
        build-tools;$ANDROID_SDK_BUILD_TOOLS_VERSION \
        platform-tools \
        platforms;android-$ANDROID_SDK_PLATFORM_VERSION \
        extras;android;m2repository \
        extras;google;m2repository \
        extras;google;google_play_services \
    "

ENV PATH=$PATH:$ANDROID_SDK_HOME/tools/bin:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/build-tools/$ANDROID_SDK_BUILD_TOOLS_VERSION:$ANDROID_SDK_HOME/platform-tools

RUN mkdir -p $ANDROID_SDK_HOME && \
    wget -q -O android.zip $ANDROID_SDK_URL && \
    unzip -d $ANDROID_SDK_HOME android.zip && \
    rm android.zip

RUN mkdir -p $ANDROID_SDK_ROOT/.android && \
    touch $ANDROID_SDK_ROOT/.android/repositories.cfg && \
    yes | sdkmanager --licenses && \
    yes | sdkmanager $ANDROID_SDK_PACKAGES

RUN cordova telemetry off

WORKDIR /var/app
EXPOSE 8100 35729
CMD ["ionic", "serve"]

  1. Я запускаю контейнер, использующий изображение ionic-android: ubuntu
docker run -it ionic-android:ubuntu /bin/bash
  1. Я вхожу в контейнер и создаю новый ионный проект
ionic start myApp blank
cd myApp/
npm i

npm install --unsafe-perm node-sass
ionic cordova platform add android
ionic build
  1. пытаюсь скомпилировать
ionic cordova build android

но выдает следующую ошибку

...
Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
...

Примечание:

#ionic info
Ionic:

   ionic (Ionic CLI)             : 4.12.0 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.4.2
   @angular-devkit/build-angular : 0.13.9
   @angular-devkit/schematics    : 7.3.9
   @angular/cli                  : 7.3.9
   @ionic/angular-toolkit        : 1.5.1

Cordova:

   cordova (Cordova CLI) : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms     : android 8.0.0
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.0.1, (and 4 other plugins)

System:

   NodeJS : v10.15.3 (/usr/local/bin/node)
   npm    : 6.9.0
   OS     : Linux 4.15

#cordova requirements
Requirements check results for android:
Java JDK: installed 1.8.0
Android SDK: installed true
Android target: installed android-28
Gradle: installed /opt/gradle/gradle-5.4.1/bin/gradle

Я уже безуспешно пытался:

  • открытым JDK
  • кордова 8
  • Gradle 5
  • Gradle 4

Извините за мой плохой английский.

1 Ответ

0 голосов
/ 26 мая 2019

Запустите в папке вашего проекта:

cordova clean

тогда

ionic cordova build android
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...