Gradle android自动填写SVN号,并发布(拷贝)到指定目录

本文介绍如何在Gradle项目中集成SVN版本号,并自动获取App的版本名称。通过定义Gradle任务,实现从SVN获取修订版本号,以及读取AndroidManifest.xml文件来提取应用版本名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

svn号

1、classpath增加依赖:

      

classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11'

     (可查找下最新的版本)


2、在主项目(app的模块目录)下的build.gradle中增加:

android {....}

def getSvnRevision() {
    ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
    SVNClientManager clientManager = SVNClientManager.newInstance(options);
    SVNStatusClient statusClient = clientManager.getStatusClient();
    SVNStatus status = statusClient.doStatus(projectDir, false);
    SVNRevision revision = status.getRevision();
    def svnNum = revision.getNumber();
    println("Svn version: " + svnNum);
    println("============");
    return svnNum;
}

注意下,revision要本地更新后才能取得。status中还有其他的数据,例如最后提交等。需要的可自行更改。


App 版本号:

App版本号可以在 defaultConfig 中直接配,但有时候写在 manifest.中会不容易忘。

def getVerName() {
    String manifestText = file("AndroidManifest.xml").getText();
    def matcherVersion = Pattern.compile("android:versionName=\"([\\d.]+).*\"").matcher(manifestText);
    if (matcherVersion.find()) {
        def verName = matcherVersion.group(1);
        println("============");
        println("App version: " + verName);
        return verName;
    } else {
        throw new GradleException('Not find versionName in AndroidManifest');
    }
}


注意下 AndroidManifest 的路径,是相对与当前的 build.gradle的,标准的AS创建是在 src/main/AndroidManifest.xml


使用 可以直接 = ,或者用  ${getVerName()}


编译后输出路径:

这有很多中做法,一种是build后拷贝,一种是直接修改variants的输出路径,这里暂时先提供后面一种:

    buildTypes {
        release {
            // .....
            applicationVariants.all { variant ->
                if ("release".equals(variant.buildType.name)) {// Only Release
                    variant.outputs.each { output ->
                        def targetDir = "D:/App";  // 目标路径

                        output.outputFile = new File(targetDir,
                                "App_${getVerName()}_${getSvnRevision()}.apk");
                        println(output.outputFile)
                    }
                }
            }
        }
    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值