利用gradle修改打包或者執行時App工程生成的app檔名
阿新 • • 發佈:2019-02-16
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'而且在build最外層,所有花括號外新增獲取當前打包的事件字串)) { // 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 {} }
//獲取時間戳 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 {} }