ccgo 3.4.4

A high-performance C++ cross-platform build CLI
# Dockerfile for building Android native libraries (AAR with .so) on any platform
# Includes Android SDK, NDK, and all required build tools
FROM ubuntu:22.04

# Prevent interactive prompts during installation
ENV DEBIAN_FRONTEND=noninteractive

# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    cmake \
    git \
    wget \
    curl \
    zip \
    unzip \
    pkg-config \
    libssl-dev \
    ca-certificates \
    openjdk-17-jdk \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*

# Install ccgo from PyPI (pre-compiled wheel, fast installation)
RUN pip3 install --no-cache-dir ccgo

# Set Java environment
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# Install Android Command Line Tools
WORKDIR /opt
RUN wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip && \
    unzip -q commandlinetools-linux-9477386_latest.zip && \
    rm commandlinetools-linux-9477386_latest.zip

# Set up Android SDK directory structure
ENV ANDROID_HOME=/opt/android-sdk
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools && \
    mv cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest

# Add Android tools to PATH
ENV PATH="${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/build-tools/34.0.0:${PATH}"

# Accept Android SDK licenses
RUN yes | sdkmanager --licenses || true

# Install Android SDK components
# - Platform 34 (Android 14)
# - Build tools 34.0.0
# - Platform tools (adb, fastboot, etc.)
# - CMake 3.22.1 (for native builds)
# - NDK (Android Native Development Kit)
RUN sdkmanager \
    "platform-tools" \
    "platforms;android-34" \
    "build-tools;34.0.0" \
    "cmake;3.22.1" \
    "ndk;25.2.9519653"

# Set NDK environment variables
ENV ANDROID_NDK_HOME="${ANDROID_HOME}/ndk/25.2.9519653"
ENV ANDROID_NDK_ROOT="${ANDROID_NDK_HOME}"
ENV NDK_ROOT="${ANDROID_NDK_HOME}"
ENV PATH="${ANDROID_NDK_HOME}:${PATH}"

# Install Gradle 8.x (required for modern Android builds)
RUN wget -q https://services.gradle.org/distributions/gradle-8.5-bin.zip && \
    unzip -q gradle-8.5-bin.zip -d /opt && \
    rm gradle-8.5-bin.zip

ENV GRADLE_HOME=/opt/gradle-8.5
ENV PATH="${GRADLE_HOME}/bin:${PATH}"

# Set working directory
WORKDIR /workspace

# Set environment variables
ENV LANG=C.UTF-8 \
    LC_ALL=C.UTF-8

# Verify installations
RUN echo "=== Verification ===" && \
    java -version && \
    echo "JAVA_HOME: ${JAVA_HOME}" && \
    echo "ANDROID_HOME: ${ANDROID_HOME}" && \
    echo "ANDROID_NDK_HOME: ${ANDROID_NDK_HOME}" && \
    gradle --version && \
    python3 --version && \
    ccgo --version && \
    echo "=== Android SDK Components ===" && \
    sdkmanager --list | grep "build-tools\|platforms\|ndk\|cmake"

# Entry point - execute build script
ENTRYPOINT ["/bin/bash", "-c"]