plugins {
    alias(libs.plugins.application)
    alias(libs.plugins.kotlin)
    alias(libs.plugins.aop)
    alias(libs.plugins.easyLauncher)
}

apply from : '../common.gradle'

// Android 代码规范文档：https://github.com/getActivity/AndroidCodeStandard
android {
    namespace 'com.hjq.demo'

    buildFeatures {
        // 是否生成 BuildConfig 类
        buildConfig true
    }

    // 资源目录存放指引：https://developer.android.google.cn/guide/topics/resources/providing-resources
    defaultConfig {

        // 无痛修改包名：https://www.jianshu.com/p/17327e191d2e
        applicationId 'com.hjq.demo'

        // 仅保留中文语种的资源
        resConfigs 'zh'

        // 仅保留 xxhdpi 图片资源（目前主流分辨率 1920 * 1080）
        resConfigs 'xxhdpi'

        // 混淆配置
        proguardFiles 'proguard-sdk.pro', 'proguard-app.pro'

        // 日志开关
        buildConfigField('boolean', 'LOG_ENABLE', '' + LOG_ENABLE + '')
        // 主机地址
        buildConfigField('String', 'HOST_URL', '"' + HOST_URL + '"')
        // BuglyId
        buildConfigField('String', 'BUGLY_ID', '"' + BUGLY_ID + '"')
        // BuglyKey
        buildConfigField('String', 'BUGLY_KEY', '"' + BUGLY_KEY + '"')

        // 仅保留 arm64-v8a 架构（需要注意的是 mmkv 库在 2.0 及之后的版本已经不支持在 32 位的机器上面运行）
        ndk {
            abiFilters 'arm64-v8a'
        }
    }

    sourceSets {
        main {
            // res 资源目录配置
            res.srcDirs(
                    'src/main/res',
                    'src/main/res-common'
            )
        }
    }

    // Apk 签名的那些事：https://www.jianshu.com/p/a1f8e5896aa2
    signingConfigs {
        config {
            storeFile file(STORE_FILE)
            storePassword STORE_PASSWORD
            keyAlias KEY_ALIAS
            keyPassword KEY_PASSWORD
        }
    }

    // 构建配置：https://developer.android.google.cn/studio/build/build-variants
    buildTypes {

        debug {
            // 给包名添加后缀
            applicationIdSuffix '.debug'
            // 调试模式开关
            debuggable true
            jniDebuggable true
            // 移除无用的资源
            shrinkResources false
            // 代码混淆开关
            minifyEnabled false
            // 签名信息配置
            signingConfig signingConfigs.config
            // 添加清单占位符
            addManifestPlaceholders([
                    'app_name'    :    '@string/app_name_debug'
            ])
        }

        preview.initWith(debug)
        preview {
            applicationIdSuffix ''
            // 添加清单占位符
            addManifestPlaceholders([
                    'app_name'    :    '@string/app_name_preview'
            ])
        }

        release {
            // 调试模式开关
            debuggable false
            jniDebuggable false
            // 移除无用的资源
            shrinkResources true
            // 代码混淆开关
            minifyEnabled true
            // 签名信息配置
            signingConfig signingConfigs.config
            // 添加清单占位符
            addManifestPlaceholders([
                    'app_name'    :    '@string/app_name'
            ])
        }
    }

    packagingOptions {
        // 剔除这个包下的所有文件（不会移除签名信息）
        exclude 'META-INF/*******'
    }

    // AOP 配置（exclude 和 include 二选一）
    androidAopConfig {
        // 排除一些第三方库的包名（Gson、 LeakCanary 和 AOP 有冲突）
        // exclude 'androidx', 'com.google', 'com.squareup', 'org.apache', 'com.alipay', 'com.taobao', 'versions.9'
        // 只对以下包名做 AOP 处理
        include android.defaultConfig.applicationId
    }

    applicationVariants.configureEach { variant ->
        // apk 输出文件名配置
        variant.outputs.configureEach { output ->
            outputFileName = rootProject.getName() + '_v' + variant.versionName + '_' + variant.buildType.name
            if (variant.buildType.name == buildTypes.release.getName()) {
                outputFileName += '_' + new Date().format('MMdd')
            }
            outputFileName += '.apk'
        }
    }
}

// 应用启动图标配置
easylauncher {
    buildTypes {
        preview {
            filters = [
                customRibbon(label: "preview", position: "topRight",
                        ribbonColor: "#b65656", labelColor: "#FFFFFF")
            ]
        }
        debug {
            filters = [
                customRibbon(label: "debug", position: "topRight",
                        ribbonColor: "#b65656", labelColor: "#FFFFFF")
            ]
        }
        release {
            enable false
        }
    }
}

// 添加构建依赖项：https://developer.android.google.cn/studio/build/dependencies
// api 与 implementation 的区别：https://www.jianshu.com/p/8962d6ba936e
dependencies {
    implementation project(':library:core')
    implementation project(':library:base')
    implementation project(':library:smallestWidth')
    implementation project(':library:customWidget')
    implementation project(':library:umengSdk')

    implementation libs.deviceCompat
    implementation libs.xxPermissions

    implementation libs.titleBar

    implementation libs.toaster

    implementation libs.easyHttp
    implementation libs.okHttp

    implementation(libs.gsonFactory) {
        exclude group: 'org.jetbrains.kotlin', module: 'kotlin-reflect'
    }
    implementation(libs.gson)
    implementation libs.kotlinReflect

    implementation libs.shapeView
    implementation libs.shapeDrawable

    implementation libs.nestedScrollLayout

    implementation libs.glide
    annotationProcessor libs.glideCompiler

    implementation libs.immersionBar

    implementation libs.photoView

    implementation libs.bugly

    implementation libs.lottie

    implementation libs.refreshLayoutKernel
    implementation libs.refreshHeaderMaterial

    implementation libs.timber

    implementation libs.circleIndicator

    implementation(libs.mmkvStatic) {
        exclude group: 'androidx.annotation', module: 'annotation'
    }

    implementation libs.softInputEvent
    implementation libs.androidAopCore
    annotationProcessor libs.androidAopApt

    debugImplementation libs.leakCanary
    previewImplementation libs.leakCanary

    debugImplementation libs.chucker
    previewImplementation libs.chucker
    releaseImplementation libs.chuckerNoOp

    // 多语种：https://github.com/getActivity/MultiLanguages
    // 悬浮窗：https://github.com/getActivity/EasyWindow
    // 日志输出：https://github.com/getActivity/Logcat
    // 工具类：https://github.com/Blankj/AndroidUtilCode
    // 轮播图：https://github.com/bingoogolapple/BGABanner-Android
    // 二维码：https://github.com/bingoogolapple/BGAQRCode-Android
    // 跑马灯：https://github.com/sunfusheng/MarqueeView
    // 对象注解：https://www.jianshu.com/p/f1f888e4a35f
    // 对象存储：https://github.com/leavesC/DoKV
    // 多渠道打包：https://github.com/Meituan-Dianping/walle
    // 设备唯一标识：http://msa-alliance.cn/col.jsp?id=120
    // 嵌套滚动容器：https://github.com/donkingliang/ConsecutiveScroller
    // 隐私调用监控：https://github.com/allenymt/PrivacySentry
}