APP开发实战114-Android Studio打包介绍

29 Android Studio使用技巧

29.1打包介绍

使用AndroidStudio可以很方便的一次编译多个渠道包,步骤如下:

1 在AndroidManifest.xml文件中配置CHANNEL字符串:

android:name="UMENG_CHANNEL"

android:value="${CHANNEL_VALUE}"

tools:replace="android:value"/>

2 在项目中增加各渠道文件夹各相关文件。如不同渠道包连接的服务器地址不同,可以做如下配置:

每个渠道包的strings.xml文件中包含对应的服务器地址:

http://www.xxx.com

3在gradle文件中添加如下代码:

productFlavors{

//编译3个渠道包

demo3 {

}

demo4 {

}

demo5 {

}

//设置每个渠道包中的渠道名称

productFlavors.all { flavor ->

flavor.manifestPlaceholders =[CHANNEL_VALUE: name]

}

//把代码的提交次数+渠道名称作为版本号

applicationVariants.all{ variant ->

if(variant.buildType.name.equals('release')) {

def gitVersion =gitVersionCode()

variant.mergedFlavor.versionCode = gitVersion

variant.mergedFlavor.versionName= gitVersion.toString() +variant.mergedFlavor.manifestPlaceholders.CHANNEL_VALUE

}

}

//按APK名+版本号+编译时间+渠道名称的方式修改编译的APK文件名称

applicationVariants.all{ variant ->

if(variant.buildType.name.equals('release')) {

variant.outputs.each { output ->

def outputFile =output.outputFile

if (outputFile !=null &&

outputFile.name.endsWith('release.apk')){

def fileName =

"xxx_v${variant.mergedFlavor.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"

output.outputFile = newFile(outputFile.parent, fileName)

}

//删除xxx-unaligned.apk这类没有字节对齐的APK文件

if(output.zipAlign!= null){

output.zipAlign.doLast{

output.zipAlign.inputFile.delete()

}

}

}

}

}

}

//获取Git服务器上的代码提交次数

defgitVersionCode() {

def cmd = 'git rev-list HEAD --count'

cmd.execute().text.trim().toInteger()

}

//得到当前时间的字符串,不能用UTC时区,要用上海所在的时区(也就是北京//时间)

defreleaseTime() {

return newDate().format("yyyyMMddHHmmss",

TimeZone.getTimeZone("Asia/Shanghai"))

}

你可能感兴趣的:(APP开发实战114-Android Studio打包介绍)