plugins {
    id 'com.android.application'
}

android {
    compileSdk 28

    defaultConfig {
        applicationId "com.shi.androidstudio.multichannel.baidu"
        minSdk 21
        targetSdk 28
        versionCode 1
        versionName "1.0"
        manifestPlaceholders = [CHANNEL_VALUE: "baidu"]//AndroidManifest.xml 里渠道变量
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        flavorDimensions "default"//默认渠道
        resConfigs "en"//只保留默认的国际化标准

        ndk {//ndk的so库过滤
            abiFilters "armeabi"/*, "armeabi-v7a"*/, "arm64-v8a"
        }

    }

    // 使用签名文件进行签名的两种方式

    //第一种：使用gradle直接签名打包
    signingConfigs {
        config {
            storeFile file('keyTest.jks')
            storePassword '123456'
            keyAlias 'HomeKey'
            keyPassword '123456'
        }
    }
    //第二种：为了保护签名文件，把它放在local.properties中并在版本库中排除
    // ，不把这些信息写入到版本库中（注意，此种方式签名文件中不能有中文）
//    signingConfigs {
//        config {
//            storeFile file(properties.getProperty("keystroe_storeFile"))
//            storePassword properties.getProperty("keystroe_storePassword")
//            keyAlias properties.getProperty("keystroe_keyAlias")
//            keyPassword properties.getProperty("keystroe_keyPassword")
//        }
//    }

    //多渠道打包
    productFlavors {
        baidu {//QQ
            applicationId "com.shi.androidstudio.multichannel.baidu"
//             动态修改 常量 字段
            buildConfigField "String", "ENVIRONMENT", '"我是百度首页"'
//             修改 AndroidManifest.xml 里渠道变量
            manifestPlaceholders = [CHANNEL_VALUE: "baidu"]
        }
        qq {//百度
            applicationId "com.shi.androidstudio.multichannel.qq"
//             动态修改 常量 字段
            buildConfigField "String", "ENVIRONMENT", '"我是腾讯首页"'
//             修改 AndroidManifest.xml 里渠道变量
            manifestPlaceholders = [CHANNEL_VALUE: "qq"]
        }
        xiaomi {//小米
            applicationId "com.shi.androidstudio.multichannel.xiaomi"
//             动态修改 常量 字段
            buildConfigField "String", "ENVIRONMENT", '"我是小米首页"'
//             修改 AndroidManifest.xml 里渠道变量
            manifestPlaceholders = [CHANNEL_VALUE: "xiaomi"]
        }
    }

    buildTypes {
        debug {
            // debug模式下，显示log
            buildConfigField("boolean", "LOG_DEBUG", "true")
            //为已经存在的applicationId添加后缀
            applicationIdSuffix ".debug"
            // 为版本名添加后缀
            versionNameSuffix "-debug"
            // 不开启混淆
            minifyEnabled false
            // 不移除无用的resource文件
//            shrinkResources false
            // 使用config签名
            signingConfig signingConfigs.config

        }
        release {
            // release模式下，不显示log
            buildConfigField("boolean", "LOG_DEBUG", "false")
            // 为版本名添加后缀
            versionNameSuffix "-relase"
            // 不开启混淆
            minifyEnabled false
            // 移除无用的resource文件
//            shrinkResources true
            // 使用config签名
            signingConfig signingConfigs.config
            // 混淆文件位置
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

    }
    //移除lint检测的error
    lintOptions {
        checkReleaseBuilds false
        abortOnError false
    }

    aaptOptions {
        //防止java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
        noCompress 'mp3', 'aac', 'mp4', 'wav'
        cruncherEnabled false //用来关闭Android Studio的PNG合法性检查的，直接不让它检查。
        useNewCruncher(false)
    }


    compileOptions {//知名使用的JDK版本
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    // 批量打包
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            if (output.name == 'release') {
                variant.packageApplicationProvider.get().outputDirectory = new File(project.rootDir.absolutePath + "/app")
                //输出apk名称为：版本名_版本code_时间.apk
                def fileName = "MiChat_v${defaultConfig.versionName}_code${defaultConfig.versionCode}_t${releaseTime()}_release.apk"
                output.outputFileName = fileName
            }
        }
    }


}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
}