plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'kotlin-kapt'
    id 'kotlin-parcelize'
    id 'img-optimizer'
    id 'com.yanzhenjie.andserver'
}

def keyProps = new Properties()
def keyPropsFile = rootProject.file('keystore/keystore.properties')
if (keyPropsFile.exists()) {
    keyProps.load(new FileInputStream(keyPropsFile))
}

//打包时，记得设置true启用
if (isNeedPackage.toBoolean() && isUseBooster.toBoolean()) {
    apply plugin: 'com.didiglobal.booster'
}

android {
    //noinspection GradleDependency
    buildToolsVersion build_versions.build_tools
    compileSdkVersion build_versions.target_sdk

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    buildFeatures {
        viewBinding true
    }

    defaultConfig {
        applicationId "com.idormy.sms.forwarder"
        minSdkVersion build_versions.min_sdk
        targetSdkVersion build_versions.target_sdk
        versionCode build_versions.version_code
        versionName build_versions.version_name
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = [moduleName: project.getName()]
            }
        }

        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        }
    }

    signingConfigs {
        release {
            keyAlias keyProps['keyAlias']
            keyPassword keyProps['keyPassword']
            storeFile keyProps['storeFile'] ? file(keyProps['storeFile']) : null
            storePassword keyProps['storePassword']
        }
        debug {
            keyAlias keyProps['keyAlias']
            keyPassword keyProps['keyPassword']
            storeFile keyProps['storeFile'] ? file(keyProps['storeFile']) : null
            storePassword keyProps['storePassword']
        }
    }

    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            if (isNeedPackage.toBoolean()) {
                signingConfig signingConfigs.release
                if (file('local.properties').exists()) {
                    Properties properties = new Properties()
                    properties.load(project.rootProject.file('local.properties').newDataInputStream())
                    def appID = properties.getProperty("APP_ID_UMENG")
                    if (appID != null) {
                        buildConfigField "String", "APP_ID_UMENG", appID
                    } else {
                        buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"'
                    }
                } else {
                    buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"'
                }
            } else {
                signingConfig signingConfigs.debug
                buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"'
            }
        }
        debug {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            if (isNeedPackage.toBoolean()) {
                signingConfig signingConfigs.release
                if (file('local.properties').exists()) {
                    Properties properties = new Properties()
                    properties.load(project.rootProject.file('local.properties').newDataInputStream())
                    def appID = properties.getProperty("APP_ID_UMENG")
                    if (appID != null) {
                        buildConfigField "String", "APP_ID_UMENG", appID
                    } else {
                        buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"'
                    }
                } else {
                    buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"'
                }
            } else {
                signingConfig signingConfigs.debug
                buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"'
            }
        }
        /*debug {
            debuggable true
            minifyEnabled false

            signingConfig signingConfigs.debug
            buildConfigField "String", "APP_ID_UMENG", '"60254fc7425ec25f10f4293e"'
        }*/
    }

    //ABI配置——按CPU架构分别打包
    splits {
        abi {
            enable true
            reset()
            include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
            universalApk true
        }
    }
    def abiCodes = ['universal': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'x86': 4, 'x86_64': 5]
    packagingOptions {
        //去除FrpcLib的so，用时下载并动态加载
        if (isNeedPackage.toBoolean()) {
            exclude 'lib/armeabi-v7a/libgojni.so'
            exclude 'lib/arm64-v8a/libgojni.so'
            exclude 'lib/x86/libgojni.so'
            exclude 'lib/x86_64/libgojni.so'
        }
        resources {
            pickFirst 'META-INF/LICENSE.md'
            pickFirst 'META-INF/NOTICE.md'
            excludes += ['META-INF/DEPENDENCIES.txt', 'META-INF/LICENSE.txt', 'META-INF/NOTICE.txt', 'META-INF/NOTICE', 'META-INF/LICENSE', 'META-INF/DEPENDENCIES', 'META-INF/notice.txt', 'META-INF/license.txt', 'META-INF/dependencies.txt', 'META-INF/LGPL2.1']
        }
    }
    android.applicationVariants.all { variant ->
        // Assigns a different version code for each output APK.
        variant.outputs.each {
            output ->
                def date = new Date().format("yyyyMMdd", TimeZone.getTimeZone("GMT+08"))
                //noinspection GrDeprecatedAPIUsage
                def abiName = output.getFilter(com.android.build.OutputFile.ABI)
                if (abiName == null) abiName = "universal"
                output.versionCodeOverride = abiCodes.get(abiName, 0) * 100000 + variant.versionCode
                output.outputFileName = "SmsForwarder_${variant.name}_${versionName}_${output.versionCode}_${date}_${abiName}.apk"
        }
    }


    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
    lint {
        abortOnError false
    }
    namespace 'com.idormy.sms.forwarder'

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //frpc
    implementation files('libs/frpclib.aar')

    testImplementation deps.junit
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation deps.espresso.core

    implementation 'androidx.core:core-ktx:1.8.0'
    implementation "androidx.activity:activity-ktx:1.5.1"
    implementation "androidx.fragment:fragment-ktx:1.5.4"
    implementation "androidx.cardview:cardview:1.0.0"
    implementation 'androidx.appcompat:appcompat:1.5.1'
    implementation 'androidx.preference:preference-ktx:1.2.0'

    //分包
    implementation deps.androidx.multidex

    //vLayout：https://github.com/alibaba/vlayout
    implementation 'com.alibaba.android:vlayout:1.3.0'
    //下拉刷新
    implementation 'com.github.xuexiangjys.SmartRefreshLayout:refresh-header:1.1.5'
    implementation 'com.github.xuexiangjys.SmartRefreshLayout:refresh-layout:1.1.5'
    //WebView
    implementation 'com.github.xuexiangjys.AgentWeb:agentweb-core:1.0.0'
    implementation 'com.github.xuexiangjys.AgentWeb:agentweb-download:1.0.0'//选填
    //屏幕适配AutoSize：https://github.com/JessYanCoding/AndroidAutoSize
    implementation 'me.jessyan:autosize:1.2.1'
    //umeng统计
    implementation 'com.umeng.umsdk:common:9.5.4'
    implementation 'com.umeng.umsdk:asms:1.6.3'

    //预加载占位控件
    implementation 'me.samlss:broccoli:1.0.0'

    //RichText：https://github.com/zzhoujay/RichText
    implementation 'com.zzhoujay.richtext:richtext:3.0.8'

    //美团多渠道打包
    //implementation 'com.meituan.android.walle:library:1.1.6'

    api("androidx.work:work-multiprocess:2.7.1")
    api("androidx.work:work-runtime-ktx:2.7.1")

    //Android Room
    def room_version = '2.4.3'
    implementation "androidx.room:room-ktx:$room_version"
    implementation "androidx.room:room-runtime:$room_version"
    implementation "androidx.room:room-paging:$room_version"
    implementation "androidx.room:room-rxjava2:$room_version"
    kapt "androidx.room:room-compiler:$room_version"

    //CodeView：https://github.com/AmrDeveloper/CodeView
    implementation 'com.github.AmrDeveloper:CodeView:1.3.7'

    //LiveEventBus：https://github.com/JeremyLiao/LiveEventBus
    implementation 'io.github.jeremyliao:live-event-bus-x:1.8.0'

    //MarkdownView：https://github.com/tiagohm/MarkdownView
    implementation 'com.github.tiagohm.MarkdownView:library:0.19.0'
    implementation 'com.github.tiagohm.MarkdownView:emoji:0.19.0'

    def retrofit2_version = '2.9.0'
    implementation "com.squareup.retrofit2:retrofit:$retrofit2_version"
    implementation "com.squareup.retrofit2:converter-gson:$retrofit2_version"
    implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofit2_version"

    def paging_version = "3.1.1"
    implementation "androidx.paging:paging-runtime-ktx:$paging_version"
    // alternatively - without Android dependencies for tests
    testImplementation "androidx.paging:paging-common-ktx:$paging_version"

    //权限请求框架：https://github.com/getActivity/XXPermissions
    implementation 'com.github.getActivity:XXPermissions:16.6'

    def mail_version = '1.6.7'
    implementation "com.sun.mail:android-mail:$mail_version"
    implementation "com.sun.mail:android-activation:$mail_version"

    //Android Keep Alive(安卓保活)，Cactus 集成双进程前台服务，JobScheduler，onePix(一像素)，WorkManager，无声音乐
    //https://github.com/gyf-dev/Cactus
    implementation 'com.gyf.cactus:cactus:1.1.3-beta13'

    //HTTP服务器：https://github.com/yanzhenjie/AndServer
    implementation 'cn.ppps.andserver:api:2.1.11'
    kapt 'cn.ppps.andserver:processor:2.1.11'

    //国密算法SM4 的JAVA实现(基于BC实现)
    api 'org.bouncycastle:bcprov-jdk15on:1.70'
}
//自动添加X-Library依赖
apply from: 'x-library.gradle'
//walle多渠道打包
//apply from: 'multiple-channel.gradle'


