Gradle配置之自定義APK名稱及輸出路徑。

需求是這樣的,我們的項目在上線的時候需要根據公司的明明規(guī)則重新對apk文件命名后才能發(fā)布到市場上。于是生成的每個apk文件都需要重新命名,如果渠道較少還好說,但是如果多的話就麻煩了。


其實方法很簡單,只需要在你的app的Build.gradle文件中添加以下代碼就可以了。

android {
    ……//省略部分代碼
    applicationVariants.all {
        //判斷是release還是debug版本
        def buildType = it.buildType.name
        def fileName
        //下面的channel是獲取渠道號,你獲取渠道號不一定會和我的代碼一樣,因為有可能你的渠道名稱的規(guī)則和我的不一樣,我的規(guī)則是${渠道名}-${applicationId},所以我是這樣取的。
        def channel = it.productFlavors[0].name.split("-")[0]
        //獲取當前時間的"YYYY-MM-dd"格式。
        def createTime = new Date().format("YYYY-MM-dd", TimeZone.getTimeZone("GMT+08:00"))
        //只對Release包起作用,如果不是Release包則不變更輸出路徑,否則可能導致AS無法自動安裝debug包。
        if (buildType == "release") {
            it.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/apks/${it.productFlavors[0].applicationId}/${createTime}")
        }
        it.outputs.each {
            //只對Release包起作用,如果不是Release包則不變更名稱。
            if (buildType == "release") {
                //我此處的命名規(guī)則是:渠道名_項目名_版本名_創(chuàng)建時間_構建類型.apk
                fileName = "${channel}_項目名稱_v${defaultConfig.versionName}_${createTime}-${buildType}.apk"
                //將名字打印出來,以便及時查看是否滿意。
                println "文件名:-----------------${fileName}"
                //重新對apk命名。(適用于Gradle4.0以下版本)
                //it.outputFile = new File(it.outputFile.parent, fileName)
                //重新對apk命名。(適用于Gradle4.0(含)以上版本)如果你Gradle版本是4.0以下版本則將上面的一行代碼放開并注釋下面的這一行。
                it.outputFileName = fileName
            }
        }
    }
    ……//省略部分代碼
}

怎么樣?上面的代碼是不是很簡單,只需要把代碼拷貝到你的項目中然后響應的地方改成你的就OK了。代碼相信大家都能看懂,都是Groovy代碼,如果不懂可以去百度一下,教程一堆。

補充一點:上面代碼中一句println fileName可能有的同學不知道在哪里查看,這個需要到Gradle Console中去查看。不知道在哪里的看下面的圖片:


如果你覺得文章內容對你有幫助請幫忙頂一下,你的支持是對我最大的鼓勵。謝謝?。?!

這里寫圖片描述
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 這篇文章講給大家?guī)韌radle打包系列中的高級用法-自己動手編寫gradle插件。我們平常在做安卓開發(fā)時,都會在...
    呆萌狗和求疵喵閱讀 16,347評論 22 80
  • 找不到的冬日暖陽, 說不出的夏日離殤, 理不清的秋日惆悵, 看不盡的春日茫茫。 看一眼, 過目不忘。 嘆一聲, 意...
    忍冬獨活閱讀 282評論 1 1
  • 憤怒、傷心、沮喪、無能為力、憂慮,今天一整天都沉浸在這些負面的情緒中而不能自拔,而讓我置身于此的元兇竟然是...
    岳Domke閱讀 808評論 6 2

友情鏈接更多精彩內容