Android studio 使用gralde配置 打包apk,并重命名apk名称


在android开发中,应用上线,最后一步打包apk,是每个开发者必经之路。然而打好的原xx.apk,总是要修改重命名,我们都希望打出的原xx.pak,在默认命名上具有一定的意义:比如:(公司名+渠道号+会否为正式版本+日期+版本号.apk),如果默认的出包是这样有意义的命名岂不是美滋滋,然而,默认的出包是做不到的。

问题:studio如此强大,有没有通过gradle配置实现呢?
答案:肯定是有的。

开撸吧:
(重要事说三遍)
注意:是在model的build.gradle 里面配置
注意:是在model的build.gradle 里面配置
注意:是在model的build.gradle 里面配置


第一步:配置签名(写在android{…}节点里面)

    signingConfigs {
        release {
            keyAlias 'syzs'
            keyPassword 'android'
//            storeFile 
file('C:/Users/2144/Desktop/keystore/syzshelper.jks')
            storeFile file('/Users/ekikousei/Desktop/keystore/syzshelper.jks')
            storePassword 'android'
        }
    }


//
buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            signingConfig signingConfigs.release
        }
    }

第二步:配置友盟渠道(写在android{…}节点里面)

//    友盟渠道号
    productFlavors {
        wandoujia {}
        baidu {}
        c360 {}
        uc {}
        tencent {}
        syzs2144 {}

        productFlavors.all { flavor ->
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
        }

    }

这里说下:’UMENG_CHANNEL_VALUE’ 这个参数是清单文件友盟配置选项如下:(注意 取名要一样,取名要一样,取名要一样)

        <!-- 友盟渠道配置 -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="xxxx"/>
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="${UMENG_CHANNEL_VALUE}"/>
        <!-- 友盟渠道配置 -->

第三步:重命名(写在android{…}节点里面)

//修改生成的apk名字  
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def oldFile = output.outputFile
            if (variant.buildType.name.equals('release')) {
                def releaseApkName = '2144syzs_' + variant.productFlavors[0].name + '_release_'+releaseTime()+'_V' + defaultConfig.versionName + '.apk'
                output.outputFile = new File(oldFile.parent, releaseApkName)
            }
        }

    }

获取日期的方法(跟android{…}节点同级)

//获取日期
def releaseTime() {
    return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}

这里写图片描述

就这样配置完了,其中需要注意的步骤也说了:感觉美滋滋

最终出的包效果图
这里写图片描述

嗯哼,还不错,达到了自己预期想要的结果。!!

猜你喜欢

转载自blog.csdn.net/jky_yihuangxing/article/details/80097427
今日推荐