在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"))
}
就这样配置完了,其中需要注意的步骤也说了:感觉美滋滋
最终出的包效果图
嗯哼,还不错,达到了自己预期想要的结果。!!