- Aggiorna Vite: 4.3.9 → 5.4.10 - Aggiorna Vue: 3.2.47 → 3.4.38 - Aggiorna @vitejs/plugin-vue: 4.1.0 → 5.1.4 - Aggiorna vite-plugin-pwa: 0.16.0 → 0.20.5 - Aggiorna Capacitor: 6.0.0 → 6.2.0 - Aggiorna wave-ui: 3.3.0 → 3.17.0 - Aggiorna Node.js nel Dockerfile: 18.x → 20.x (LTS) - Aggiunge fix automatico permessi dist dopo build Docker
84 lines
2.8 KiB
Docker
84 lines
2.8 KiB
Docker
# Dockerfile per build APK Android con Capacitor
|
|
FROM ubuntu:22.04
|
|
|
|
# Evita prompt interattivi
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Installa dipendenze base
|
|
RUN apt-get update && apt-get install -y \
|
|
curl \
|
|
git \
|
|
unzip \
|
|
wget \
|
|
openjdk-21-jdk \
|
|
build-essential \
|
|
imagemagick \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Installa Node.js 20.x (LTS)
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
|
|
&& apt-get install -y nodejs
|
|
|
|
# Installa Gradle 8.5
|
|
ENV GRADLE_VERSION=8.5
|
|
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip -P /tmp \
|
|
&& unzip -d /opt/gradle /tmp/gradle-${GRADLE_VERSION}-bin.zip \
|
|
&& ln -s /opt/gradle/gradle-${GRADLE_VERSION}/bin/gradle /usr/bin/gradle \
|
|
&& rm /tmp/gradle-${GRADLE_VERSION}-bin.zip
|
|
|
|
# Installa Android SDK
|
|
ENV ANDROID_SDK_ROOT=/opt/android-sdk
|
|
ENV ANDROID_HOME=${ANDROID_SDK_ROOT}
|
|
ENV PATH=${PATH}:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/platform-tools
|
|
|
|
RUN mkdir -p ${ANDROID_SDK_ROOT}/cmdline-tools \
|
|
&& wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -P /tmp \
|
|
&& unzip -d ${ANDROID_SDK_ROOT}/cmdline-tools /tmp/commandlinetools-linux-9477386_latest.zip \
|
|
&& mv ${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools ${ANDROID_SDK_ROOT}/cmdline-tools/latest \
|
|
&& rm /tmp/commandlinetools-linux-9477386_latest.zip
|
|
|
|
# Accetta licenze Android SDK
|
|
RUN yes | sdkmanager --licenses || true
|
|
|
|
# Installa componenti Android necessari
|
|
RUN sdkmanager "platform-tools" \
|
|
"platforms;android-34" \
|
|
"build-tools;34.0.0" \
|
|
"extras;google;google_play_services" \
|
|
"extras;android;m2repository" \
|
|
"extras;google;m2repository"
|
|
|
|
# Imposta JAVA_HOME in base all'architettura
|
|
RUN ARCH=$(dpkg --print-architecture) && \
|
|
echo "export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-${ARCH}" >> /etc/profile && \
|
|
ln -sf /usr/lib/jvm/java-21-openjdk-${ARCH} /usr/lib/jvm/default-java
|
|
|
|
ENV JAVA_HOME=/usr/lib/jvm/default-java
|
|
|
|
# Directory di lavoro
|
|
WORKDIR /app
|
|
|
|
# Copia package files per cache layer
|
|
COPY package*.json ./
|
|
|
|
# Installa dipendenze npm
|
|
RUN npm ci --legacy-peer-deps || npm install --legacy-peer-deps
|
|
|
|
# Copia il resto del progetto
|
|
COPY . .
|
|
|
|
# Build script
|
|
CMD ["bash", "-c", "\
|
|
npm install --legacy-peer-deps && \
|
|
npm run build && \
|
|
npx cap add android && \
|
|
npx cap sync && \
|
|
sed -i 's/android:configChanges=\"\\([^\"]*\\)\"/android:configChanges=\"\\1\" android:screenOrientation=\"sensorLandscape\"/g' android/app/src/main/AndroidManifest.xml && \
|
|
bash setup-android-icons.sh && \
|
|
cd android && ./gradlew assembleDebug --no-daemon && \
|
|
mkdir -p /app/dist/android && \
|
|
cp app/build/outputs/apk/debug/app-debug.apk /app/dist/android/segnapunti-debug.apk && \
|
|
echo '' && \
|
|
echo 'APK generato: /app/dist/android/segnapunti-debug.apk'\
|
|
"]
|