Android Studio使用gradle进行构建,Android Studio在进行构建时实际上就是使用的gradle各种命令,脱离Android Studio的ide环境,通过这些命令gradle也可以进行各种构建,结合脚本即可完成自动编译的内容

  1. 配置签名文件
    在project的gradle文件中定义签名文件的相关信息,这样就可以在所有module中引用

    ext {
    minifyEnabled = true //混淆开关

    sign = [
    keyAlias : "xxx",
    keyPassword : "xxxxx",
    storePassword : "xxxxxxxxx",
    storeFile : "../../xxxx/xxxx",
    serverPath : "../../Apk/",
    windowsPath : "../../Apk"
    ]
    }

    在module的gradle文件中的android节点下配置使用签名,可以对release和debug进行区分指定

    android {
    signingConfigs {
    debug {
    keyAlias sign.keyAlias
    keyPassword sign.keyPassword
    storeFile file(sign.storeFile)
    storePassword sign.storePassword
    }
    release {
    keyAlias sign.keyAlias
    keyPassword sign.keyPassword
    storeFile file(sign.storeFile)
    storePassword sign.storePassword
    }
    }
    buildTypes {
    debug {
    minifyEnabled false
    signingConfig signingConfigs.debug
    }
    release {
    minifyEnabled rootProject.ext.minifyEnabled
    shrinkResources rootProject.ext.minifyEnabled
    signingConfig signingConfigs.release
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    }
  2. 对生成apk的名称进行指定
    可以针对linux系统和windows系统分别将apk指定到不同路径
    可以将混淆生成的mapping文件进行备份
    还是在android节点下进行添加

    android {
    android.applicationVariants.all { variant ->
    if ("release" == variant.buildType.name) {
    assembleRelease.doLast {
    variant.outputs.all { output ->
    file(output.outputFile.parent).eachFileRecurse(groovy.io.FileType.FILES) { file ->
    if (!file.name.endsWith('.apk')) { //生成apk的同时会生成一些其他信息文件,进行删除
    delete file
    }
    }
    if (org.gradle.internal.os.OperatingSystem.current().isLinux()) {
    copy {
    from output.outputFile.parent
    into file(sign.serverPath)
    rename { filename ->
    filename.replace("-release", "")
    }
    }
    } else {
    copy {
    from output.outputFile.parent
    //into output.outputFile.parentFile.parent //如果在Android Studio中进行生成并且只是将生成的apk最终生成到指定目录
    into file(sign.windowsPath)
    rename { filename ->
    filename.replace("-release", "")
    }
    }
    }
    delete output.outputFile.parent
    }
    copy { //备份混淆对照文件到对应目录
    from "build/outputs/mapping/release/"
    into "mapping/release${defaultConfig.versionName}/"
    }
    }
    }
    }
    }
  3. 使用gradle命令进行编译
    命令对应的文件在project的根目录中,为gradlew.bat和gradlew文件,windows下使用gradlew.bat,linux使用gradlew(需要赋予运行权限)
    如果编译整个project使用:./gradlew assembleRelease即可
    如果针对单个module进行编译: ./gradlew module名称:assembleRelease
    清理编译生成的内容: ./gradlew clean