项目切换到Android Studio有一段时间了,来聊聊多渠道打包的做法。
1.在productFlavors添加你需要的所有渠道
android {
productFlavors { //在这里添加你所有需要打包的渠道
dev {}
google {}
myapp {}
xiaomi {}
app360 {}
wandoujia {}
}
//添加如下代码
productFlavors.all { flavors->
flavors.manifestPlaceholders=[CHANNEL_VALUE:name]
}
}
同时修改androidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="cn.op.zdf"
android:versionCode="25"
android:versionName="3.1.2">
<application
android:name=".myApplication">
<-- 在manifest中添加如下代码--->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${CHANNEL_VALUE}"/>
</application>
</manifest>
OK,在命令行运行gradle build,大功告成。你可以去喝杯茶了。
2.如何给apk重命名
恩,发布产品的时候我们需要如下的命名规则
release版本的命名规则如下:
产品名称-版本号-渠道号-sign-42.apk
在build.gradle中添加如下代码
//获取时间戳
def getDate() {
def date = new Date()
def formattedDate = date.format('yyyyMMddHHmm')
return formattedDate
}
//从androidManifest.xml中获取版本号
def getVersionNameFromManifest(){
def manifestParser = new com.android.builder.core.DefaultManifestParser()
return manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)
}
android{
//修改生成的apk名字
applicationVariants.all{ variant->
variant.outputs.each { output->
def oldFile = output.outputFile
def newName = '';
if(variant.buildType.name.equals('release')){
// println(variant.productFlavors[0].name)
def releaseApkName = 'yjf-android-v' + getVersionNameFromManifest() + '-' + variant.productFlavors[0].name + '-sign-42.apk'
output.outputFile = new File(oldFile.parent, releaseApkName)
}
if(variant.buildType.name.equals('beta')){
newName = oldFile.name.replace(".apk", "-v" + getVersionNameFromManifest() + "-build" + getDate() + ".apk")
output.outputFile = new File(oldFile.parent, newName)
}
if(variant.buildType.name.equals('debug')){
}
}
}
}
哦,怎么取得版本号?怎么取得渠道号?怎么判断是不是release版本?上面的代码里面都有。
我的项目是从eclipse中迁移过来的,所以我是从manifest文件中读取的版本号,就是上面的那个函数 getVersionNameFromManifest()
如果你的版本号定义在build.gradle中,那defaultConfig.versionName就是你的版本号。
本文详细介绍了使用Android Studio进行多渠道打包的方法,并提供了如何为APK文件重命名的实用技巧,包括读取版本号、渠道号以及判断是否为发布版本的相关代码实现。
1125

被折叠的 条评论
为什么被折叠?



