How to do Gradle自动设置版本号及修改apk后缀

cover from : http://blog.csdn.net/xdyuchen/article/details/50951614

直接上配置文件

import java.text.SimpleDateFormat

apply plugin: 'com.android.application'

def verName = "1.0.0"

def buildTime() {
    def df = new SimpleDateFormat("yyMMddHHmmss")
    df.setTimeZone(TimeZone.getTimeZone("UTC+08:00"))
    return df.format(new Date())
}

def apkSuffix() {
    def df = new SimpleDateFormat("yyMMdd")
    df.setTimeZone(TimeZone.getTimeZone("UTC+08:00"))
    return df.format(new Date())
}

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.yuchen.yctools"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "${verName}-beta-build-${buildTime()}"
    }

    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('-debug.apk')) {
                output.outputFile = new File(outputFile.parent, outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"));
                outputFile.delete()
            }
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.+'
    compile 'com.android.support:design:23.+'
}

在设置VersionName时可以通过gradle动态设置其版本号,这里使用了时间最为版本号标识,同样也可以通过配置递增的数值来实现(需要新建一个*.properties文件来保存当前的版本标识)

ps:

在修改apk后缀名时发现当设置版本号时间标识在秒级别时,最初使用defaultConfig.versionName来配置apk后缀,发现运行会提示*.apk does not exist on disk. 原因是在编译和安装时调用了两次buildTime(),使得得到的apk路径不同

在stackoverflow上搜了好多回答也没有解决,还看到一个帖子的实现是只在apk后缀处使用时间标签,而版本号使用另外的规则

output.outputFile = new File(outputFile.parent, outputFile.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"));
output.outputFile = new File(outputFile.parent, outputFile.name.replace(".apk", "-" + variant.versionName + ".apk"));

在AnroidStudio上选择运行会执行build和install,两者的时间标签不一致导致无法找到apk文件

现在一种解决方式是build和install分开运行,一种是修改添加标签的规则避免时间冲突,有谁发现更好的方法可以分享一下 _

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,959评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,985评论 25 708
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,317评论 6 342
  • 这一章主要针对项目中可以用到的一些实用功能来介绍Android Gradle,比如如何隐藏我们的证书文件,降低风险...
    acc8226阅读 7,995评论 3 25
  • 《疯子》 去学校的路上有个女疯子,几乎每天都看到她。站在巷口,蓬头垢面,邋里邋遢。 女疯子生了个和我们一般大的小疯...
    Ivy鹿阅读 251评论 0 0

友情链接更多精彩内容