apply plugin: 'com.android.application'

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

// 读取version.properties
def versionProps = new Properties()
def versionPropsFile = rootProject.file('version.properties')
if (versionPropsFile.exists()) {
    versionProps.load(new FileInputStream(versionPropsFile))
}

android {
    buildToolsVersion '30.0.3'
    compileSdkVersion 31
    compileOptions {
        sourceCompatibility 11
        targetCompatibility 11
    }
    defaultConfig {
        applicationId "com.idormy.sms.forwarder"
        minSdkVersion 21
        targetSdkVersion 31
        versionCode versionProps['versionCode'].toInteger()
        versionName versionProps['versionName']
        testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
        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 false
            //shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            minifyEnabled false
            //shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debug
        }
    }
    //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 {
        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"))
                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"
        }
    }

    lint {
        checkReleaseBuilds false
    }
}


task upgradeVersion {
    group 'help'
    description '构建新版本'
    doLast {
        println("---自动升级版本号---\n")
        String oldVersionCode = versionProps['versionCode']
        String oldVersionName = versionProps['versionName']
        if (oldVersionCode == null || oldVersionName == null ||
                oldVersionCode.isEmpty() || oldVersionName.isEmpty()) {
            println("error:版本号不能为空")
            return
        }
        versionProps['versionCode'] = String.valueOf(versionProps['versionCode'].toInteger() + 1)
        String str = versionProps['versionName'].toString()
        versionProps['versionName'] = str.substring(0, str.lastIndexOf('.') + 1) +
                (str.substring(str.lastIndexOf('.') + 1).toInteger() + 1)
        String tip =
                "版本号从$oldVersionName($oldVersionCode)升级到${versionProps['versionName']}(${versionProps['versionCode']})"
        println(tip)

        def writer = new FileWriter(versionPropsFile)
        versionProps.store(writer, null)
        writer.flush()
        writer.close()
        def tag = "v${versionProps['versionName']}"
        cmdExecute("git pull")
        cmdExecute("git add version.properties")
        cmdExecute("git commit -m \"版本号升级为：$tag\"")
        cmdExecute("git push origin")
        cmdExecute("git tag $tag")
        cmdExecute("git push origin $tag")
    }
}

void cmdExecute(String cmd) {
    println "\n执行$cmd"
    println cmd.execute().text
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //noinspection GradleDependency
    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
    //noinspection GradleDependency
    implementation 'com.google.firebase:firebase-crashlytics-buildtools:2.5.2'
    //implementation 'com.google.android.material:material:1.5.0'
    //noinspection GradleDynamicVersion
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

    //okhttp
    //noinspection GradleDependency
    implementation 'com.squareup.okhttp3:okhttp:4.9.3'
    implementation 'com.squareup.okio:okio:3.0.0'

    //fastjson
    implementation "com.alibaba:fastjson:1.2.79"

    //XUpdate
    implementation 'com.github.xuexiangjys:XUpdate:2.1.1'
    implementation 'com.github.xuexiangjys.XUpdateAPI:xupdate-easy:1.0.1'
    implementation 'com.github.xuexiangjys.XUpdateAPI:xupdate-downloader-aria:1.0.1'

    //EmailKit
    implementation 'com.github.mailhu:emailkit:4.2.2'
    implementation 'com.sun.mail:android-mail:1.6.7'
    implementation 'com.sun.mail:android-activation:1.6.7'

    //Lombok
    //noinspection AnnotationProcessorOnCompilePath
    compileOnly 'org.projectlombok:lombok:1.18.22'
    annotationProcessor 'org.projectlombok:lombok:1.18.22'

    //RxJava
    //implementation 'io.reactivex.rxjava3:rxjava:3.1.3'

    //AndroidAsync
    implementation 'com.koushikdutta.async:androidasync:3.1.0'

    //吐司框架：https://github.com/getActivity/ToastUtils
    implementation 'com.github.getActivity:ToastUtils:10.3'
    //权限请求框架：https://github.com/getActivity/XXPermissions
    implementation 'com.github.getActivity:XXPermissions:13.2'

    //jetty
    implementation "org.eclipse.jetty:jetty-server:9.2.30.v20200428"
    implementation "org.eclipse.jetty:jetty-servlet:9.2.30.v20200428"

    //FloatingActionButton
    implementation 'com.melnykov:floatingactionbutton:1.3.0'

    //友盟统计SDK
    implementation 'com.umeng.umsdk:common:9.4.7'// (必选)
    implementation 'com.umeng.umsdk:asms:1.6.0'// 必选

}