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"))

}

更多相关文章

  1. android存取数据方式:文件、SharedPreferences
  2. 用android-logging-log4j去实现log输出内容到sd卡中的文件的功能
  3. android中读XML文件
  4. android带进度的文件上传
  5. android 查看解压后的.xml文件代码(axmlprinter2)
  6. 文件编码的测试(android)
  7. 【Android】使用dex2jar 与JD-Gui 反编译APK文件,查看源代码
  8. (转)Android软件测试的日志文件抓取简介
  9. android 文件上传的类--完整 可以直接被调用的

随机推荐

  1. Android 4.0.3来了 优化系统
  2. [转]Android onActivityResult()不执行的
  3. Android Material Design: NavigationVie
  4. Android jni的调用过程JNI_OnLoad(),利用
  5. 修改Android自带的JAVA应用程序
  6. 【Android 开发】:Android五种布局的使用
  7. 最近在翻译国外一本新书 The Android Dev
  8. Android事务 IMMEDIATE与EXCLUSIVE模式
  9. Android消息提示框和对话框
  10. android 在google商店里搜索不到的问题