# 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-17-jdk \ build-essential \ imagemagick \ && rm -rf /var/lib/apt/lists/* # Installa Node.js 18.x (LTS compatibile con Vite) RUN curl -fsSL https://deb.nodesource.com/setup_18.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-17-openjdk-${ARCH}" >> /etc/profile && \ ln -sf /usr/lib/jvm/java-17-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 run build && \ npx cap add android && \ npx cap sync && \ sed -i 's/android:configChanges=\"\\([^\"]*\\)\"/android:configChanges=\"\\1\" android:screenOrientation=\"landscape\"/g' android/app/src/main/AndroidManifest.xml && \ bash setup-android-icons.sh && \ cd android && ./gradlew assembleDebug --no-daemon && \ mkdir -p /app/output && \ cp app/build/outputs/apk/debug/app-debug.apk /app/output/segnapunti-debug.apk && \ echo '' && \ echo 'APK generato: /app/output/segnapunti-debug.apk'\ "]