def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    namespace "com.pangolin.pangolin_vpn"
    compileSdkVersion flutter.compileSdkVersion
    ndkVersion flutter.ndkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    defaultConfig {
        applicationId "com.pangolin.pangolin_vpn"
        // libbox requires minSdk 21 (gomobile -androidapi 21)
        minSdkVersion Math.max(flutter.minSdkVersion as Integer, 21)
        targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    buildTypes {
        release {
            signingConfig signingConfigs.debug
        }
    }

    // libbox.aar 包含 arm64-v8a / armeabi-v7a / x86_64 三个 ABI；
    // 若只需调试，可缩减 abiFilters 以加快构建速度。
    // splits {
    //     abi {
    //         enable true
    //         reset()
    //         include 'arm64-v8a', 'x86_64'
    //         universalApk true
    //     }
    // }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

    // ── sing-box libbox（gomobile AAR）──────────────────────────────
    // 产物由 app/kernel/build-android.sh 生成：
    //   cd app/kernel && ./build-android.sh
    // 产物路径（相对于本 build.gradle）：../../../app/kernel/dist/android/libbox.aar
    //
    // 若文件不存在，构建会报错：请先运行 build-android.sh 生成产物。
    // 路径说明：client/android/app → ../../.. → repo root → app/kernel/dist/android/
    def libboxAar = file("${projectDir}/../../../app/kernel/dist/android/libbox.aar")
    if (libboxAar.exists()) {
        implementation files(libboxAar)
    } else {
        // AAR 尚未构建 — 保留占位；IDE 会报红线，但不影响非 libbox 代码编辑。
        // 运行 `app/kernel/build-android.sh` 后重新 sync 即可。
        logger.warn("⚠  libbox.aar not found at ${libboxAar.absolutePath}")
        logger.warn("   Run: cd app/kernel && ./build-android.sh")
    }
}
