pipeline {
    agent { label 'android' }

    environment {
        ANDROID_HOME     = "${env.HOME}/Android/Sdk"
        ANDROID_SDK_ROOT = "${env.HOME}/Android/Sdk"
        JAVA_HOME        = '/opt/java/openjdk'
        PATH             = "${env.ANDROID_HOME}/cmdline-tools/latest/bin:${env.ANDROID_HOME}/platform-tools:${env.PATH}"
    }

    options {
        buildDiscarder(logRotator(numToKeepStr: '10'))
        timeout(time: 30, unit: 'MINUTES')
    }

    stages {
        stage('Verify JDK') {
            steps {
                sh 'java -version'
                sh 'javac -version'
            }
        }

        stage('Bootstrap Android SDK') {
            steps {
                sh '''
                    if [ ! -d "$ANDROID_HOME/cmdline-tools/latest/bin" ]; then
                        echo "Installing Android SDK command-line tools..."
                        mkdir -p "$ANDROID_HOME"
                        CMDLINE_TOOLS_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"
                        curl -fsSL -o /tmp/cmdline-tools.zip "$CMDLINE_TOOLS_URL"
                        unzip -qo /tmp/cmdline-tools.zip -d "$ANDROID_HOME/cmdline-tools-tmp"
                        mkdir -p "$ANDROID_HOME/cmdline-tools/latest"
                        mv "$ANDROID_HOME/cmdline-tools-tmp/cmdline-tools/"* "$ANDROID_HOME/cmdline-tools/latest/"
                        rm -rf "$ANDROID_HOME/cmdline-tools-tmp" /tmp/cmdline-tools.zip
                    fi
                '''
                sh '''
                    yes | sdkmanager --licenses > /dev/null 2>&1 || true
                    sdkmanager --install \
                        "platform-tools" \
                        "platforms;android-34" \
                        "build-tools;34.0.0"
                '''
            }
        }

        stage('Build Debug APK') {
            steps {
                sh 'chmod +x gradlew'
                sh './gradlew assembleDebug --no-daemon'
            }
        }

        stage('Build Release APK') {
            when {
                expression {
                    try {
                        credentials('joykoo-scanner-keystore')
                        return true
                    } catch (e) {
                        echo 'Signing credentials not configured — skipping release build.'
                        return false
                    }
                }
            }
            environment {
                KEYSTORE_FILE  = credentials('joykoo-scanner-keystore')
                KEYSTORE_CREDS = credentials('joykoo-scanner-keystore-creds')
            }
            steps {
                sh '''
                    ./gradlew assembleRelease --no-daemon \
                        -Pandroid.injected.signing.store.file=$KEYSTORE_FILE \
                        -Pandroid.injected.signing.store.password=$KEYSTORE_CREDS_PSW \
                        -Pandroid.injected.signing.key.alias=$KEYSTORE_CREDS_USR \
                        -Pandroid.injected.signing.key.password=$KEYSTORE_CREDS_PSW
                '''
            }
        }
    }

    post {
        success {
            archiveArtifacts artifacts: 'app/build/outputs/apk/**/*.apk', fingerprint: true
        }
        failure {
            echo 'Build failed — check the console output above.'
        }
        always {
            cleanWs()
        }
    }
}
