1. 程式人生 > >利用gradle修改打包或者執行時App工程生成的app檔名

利用gradle修改打包或者執行時App工程生成的app檔名

1.第一種情況,你的android工程versionname是通過build.gradle檔案配置的話,直接在build.gradle檔案的android括號內新增如下程式碼

//修改生成的apk名字
applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def oldFile = output.outputFile
def newName = '';
            if (variant.buildType.name.equals('release'
)) { // println(variant.productFlavors[0].name) def releaseApkName = 'app名稱' + variant.getVersionName() + '-' + variant.productFlavors[0].name +getDate()+ '-signed.apk' output.outputFile = new File(oldFile.parent, releaseApkName) } if (variant.buildType.name.equals('beta'
)) { newName = oldFile.name.replace(".apk", "-v" + getVersionNameFromManifest() + "-build" + getDate() + ".apk") output.outputFile = new File(oldFile.parent, newName) } if (variant.buildType.name.equals('debug')) { } } } productFlavors { //在這裡新增你所有需要打包的渠道
myApp {} }
而且在build最外層,所有花括號外新增獲取當前打包的事件字串
//獲取時間戳
def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMddHHmm')
    return formattedDate
}

第二種情況,你的android工程versionname是通過AndroidManifest.xml檔案來來控制的的話,在最外層新增

//從androidManifest.xml中獲取版本號
def getVersionNameFromManifest(){
    def manifestParser = new com.android.builder.core.DefaultManifestParser()
    return manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)
}
//獲取時間戳
def getDate() {
    def date = new Date()
    def formattedDate = date.format('yyyyMMddHHmm')
    return formattedDate
}
而build.gradle檔案的android花括號內新增如下程式碼
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def oldFile = output.outputFile
            def newName = '';
            if (variant.buildType.name.equals('release')) {
//                println(variant.productFlavors[0].name)
def releaseApkName = 'app名稱' + variant.getVersionName() + '-' + variant.productFlavors[0].name +getDate()+ '-signed.apk'
output.outputFile = new File(oldFile.parent, releaseApkName)
            }
            if (variant.buildType.name.equals('beta')) {
                newName = oldFile.name.replace(".apk", "-v" + getVersionNameFromManifest() + "-build" + getDate() + ".apk")
                output.outputFile = new File(oldFile.parent, newName)
            }
            if (variant.buildType.name.equals('debug')) {

            }
        }
    }

    productFlavors {  //在這裡新增你所有需要打包的渠道
myApp {}

    }