1. 程式人生 > >Android Studio 自定義打包apk名字

Android Studio 自定義打包apk名字

Android Studio打包的時候,我們想自定義自己的檔名,則可以使用

applicationVariants.all { variant ->
    variant.outputs.each { output ->
        def outputFile = output.outputFile
        if (outputFile != null && outputFile.name.endsWith('.apk')) {
 
            // apk_渠道名-版本號-版本名稱-編譯時間.apk
            def fileName = "apk_${variant.productFlavors[0].name}-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime() }.apk"
            output.outputFile = new File(outputFile.parent, fileName)
        }
    }
}

其中releaseTime()如下:

def releaseTime() {
    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}
Sync Now之後,正常打包,打出來的檔名就會是我們想要的了
apk_渠道名-版本號-版本名稱-編譯時間.apk
apply plugin: 'com.android.application'
 
android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0"
 
    defaultConfig {
        applicationId "app."
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 10 // 9
        versionName "1.2.4"
    }
 
    sourceSets {
        main {
            jniLibs.srcDirs = ['src/main/jniLibs']
        }
    }
 
    buildTypes {
        release {
            // 混淆
            minifyEnabled true
            // Zipalign優化
            zipAlignEnabled true
            // 移除無用的resource檔案
            shrinkResources true
            // 前一部分代表系統預設的android程式的混淆檔案,該檔案已經包含了基本的混淆宣告,後一個檔案是自己的定義混淆檔案
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith('.apk')) {
 
                        // apk_渠道名-版本號-版本名稱-編譯時間.apk
                        def fileName = "apk_${variant.productFlavors[0].name}-${defaultConfig.versionCode}-${defaultConfig.versionName}-${releaseTime() }.apk"
                        output.outputFile = new File(outputFile.parent, fileName)
                    }
                }
            }
        }
    }
 
    productFlavors {
        qihu360 {} // 360手機助手
        yingyongbao {} // 騰訊應用寶
        wandoujia {} // 豌豆莢
//        baidu {} // 百度手機助手
//        miui {} // 小米
//        flyme {} // 魅族
//        lenovo {} // 聯想-樂商店
//        oppo {} // Oppo-可可軟體商店
//        huawei {} // 華為
//        vivo {} // vivo
//        hiapk {} // 安卓市場
//        sj91 {} // 91手機助手
//        sogou {} // 搜狗手機市場
//        sohu {} // 搜狐應用中心
 
//        taobao {} // 淘寶手機助手
//        gfan {} // 機鋒
//        appchina {} // 應用匯
//        mumayi {} // 木螞蟻
//        wangyi163 {} // 網易應用
//        nduoa {} // N多市場
//        mm10086 {} // MM商城-中國移動
//        wostore {} // WO商店
//        youyi {} // 優異
//        uc {} // UC+開發平臺
//        anzhi {} // 安智市場
//        google {} // google play
//        amazon {} // 亞馬遜
 
    }
 
 
    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }
 
}
 
def releaseTime() {
    return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))
}