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发布到不同的应用平台,监测用户是从哪个平台安装的。 二、为什么要多渠道打包 1...
    LucasAdam阅读 965评论 0 1
  • android多渠道打包 1.如何查看apk的签名信息 1将apk解压; 2.找到META-INF 下的.RSA文...
    ping0505阅读 1,094评论 0 1
  • 由于国内Android市场众多渠道,为了统计每个渠道的下载及其它数据统计,就需要我们针对每个渠道单独打包,如果让你...
    Ten_Minutes阅读 759评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,199评论 19 139
  • 按照渠道识别型分类: META-INF渠道识别型:网页版、Python版、BAT脚本、Jar版、Manifest渠...
    比萨u阅读 2,013评论 9 18