在我們一次性打幾十個渠道包的時候,如果我們想讓打包完成的apk文件名按照我們想要的格式來命名,比如明確的apk的版本號,打包日期,那個渠道的包等等,這時就需要使用gradle的Variants屬性來動態修改生成的apk文件名
在app(module)目錄下的build.gradle文件內加入如下代碼:
def buildTime() { def date = new Date() def formattedDate = date.format('yyyy-MM-dd', TimeZone.getTimeZone("UTC")) return formattedDate}android { ...... buildTypes { release { ...... applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 輸出apk名稱為AppName_v1.0_2015-01-15_wandoujia.apk def apkFile = "AppName_v${defaultConfig.versionName}_${buildTime()}" + "_${variant.以wandoujia渠道為例,上面代碼最終打包生成的apk文件名是AppName_v1.0_2015-01-15_wandoujia.apk 而且該用法可以和./gradlew assemableRelease命令結合使用,兩者結合使用可以自動生成各個渠道的動態apk名接下來分析一下,由于Android的gradle任務比較復雜,為了讓gradle能更靈活的控配置管理,Android提供了applicationVariants、libraryVariants以及testVariants三種Variants,他們分別適用于app、 library、app和library
這里是循環處理每個applicationVariant,當他們的輸出文件名以apk結尾并且buildType是release時,重新設置新的輸出文件名,這樣就達到了我們批量修改生成的文件名的目的
參考: http://www.flysnow.org/2015/03/30/manage-your-android-project-with-gradle.html
新聞熱點
疑難解答