APP开发实战114-Android Studio打包介绍
2016-07-20 22:54
429 查看
29 Android Studio使用技巧
29.1打包介绍
使用Android Studio可以很方便的一次编译多个渠道包,步骤如下:1 在AndroidManifest.xml文件中配置CHANNEL字符串:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${CHANNEL_VALUE}"
tools:replace="android:value"/>
2 在项目中增加各渠道文件夹各相关文件。如不同渠道包连接的服务器地址不同,可以做如下配置:
每个渠道包的strings.xml文件中包含对应的服务器地址:
<resources>
<stringname="base_url">http://www.xxx.com</string>
</resources>
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"))
}
相关文章推荐
- Android文本TextView显示验证码并EditText输入
- Android中Activity的四种启动方式
- Android Wifi 移植配置
- cocos2dx v3.x之CCAction变化
- 新 Unity 最新粒子系统如何用代码改变参数
- APP开发实战113-ProGuard相关文件
- Android ActionBar的基本用法
- Android Action Bar 详解篇
- Android 输入电话号码自动空格
- APP开发实战112-ProGuard注意事项
- Android IPC 进程间通信
- APP开发实战111-ProGuard指令介绍
- android多选项表对话框
- android:常用Toast详解
- Android消息处理机制:Handler|Message
- 安卓--类似微信底部导航栏实现原理(frame和radiogroup)
- APP开发实战110-ProGuard简介
- iOS 添加view的分类(更加方便的设置view的位置)
- Android自定义view详解
- Android百度地图API获取当前位置和当前城市