Android开发记事本--Gradle内添加svn版本号作为APP的版本

自动获取svn版本号并替换android版本号 本文介绍了一种利用SVN版本号自动更新Android应用版本号的方法。通过编写Shell脚本获取SVN版本号并替换AndroidManifest.xml中的versionCode,再配置Eclipse在编译前自动执行该脚本。具体步骤包括:1)编写获取SVN版本号的脚本;2)在Eclipse中创建Builder并设置脚本执行顺序;3)确保脚本在Android编译前执行。该方法避免了手动修改版本号的繁琐,且可将配置共享给团队成员。 阅读详情

gradle的学习:https://juejin.im/post/5d74de99e51d4561d41d2e6d

在APP Gradle添加SVN版本号的操作,首先就是window可以使用svn命令,这就需要安装svn的时候安装命令如下图所示:

 

这个是必须的;

 def version = getDate() +  svninfo()//时间与svn版本号。最后的结果例如:"0709.17443"
 def code = svninfo().toInteger() //可以用于versionCode
 defaultConfig {
        applicationId "com.shunwang.cloud"
        minSdkVersion 19
        targetSdkVersion 29
        versionCode 8
        versionName version
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        buildConfigField "String", "BUILD_TIME", getDate1() //获取事件字符串
        buildConfigField "Integer", "DEFAULT_CODE",  svninfo() //写一个int类型17471
        buildConfigField "Integer", "DEFAULT_PORT",  '5000' //写一个int类型17471

    }

可以看到versionName的定义version是由两个方法实现的,一个是获取日期,一个是获取svn版本号:

String getDate() {//获取日期,例如: 0709.
    Date date = new Date();
    String datestr =  date.format("MMdd.", TimeZone.getTimeZone("UTC"))  ;
    return datestr;
}

String getDate1() {//获取日期,例如: 202007090909
    Date date = new Date();
    String datestr = "\""+ date.format("yyyyMMddHHmm", TimeZone.getTimeZone("UTC")) + "\"" ;
    return datestr;
}

def svnversion()  {//通过svnversion命令获取svn版本信息,一般为例如17433:17443M因此可能需要截取
    description 'Get SVN revision number.'
    new ByteArrayOutputStream().withStream { os ->
        def result = exec {
            executable = 'svnversion'
            standardOutput = os
        }
        ext.revid = os.toString().substring(0,5)
    }
}

def svninfo(){//通过命令svn info获取,需要截取Last Changed Rev:对应的版本这个与svnlog一致
    new ByteArrayOutputStream().withStream { os ->
        def result = exec {
            executable = 'svn'
            args = ['info']
            standardOutput = os
        }
        def outputAsString = os.toString()
        def matchLastChangedRev = outputAsString =~ /Last Changed Rev: (\d+)/
        def svnNm = "${matchLastChangedRev[0][1]} "
        def size = svnNm.toString().size()
        return svnNm.toString().substring((size-6),(size-1))
    }

这时预编译的结果是:

//BuildConfig.java
public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.example.cloud";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 8;
  public static final String VERSION_NAME = "0708.17471";
  // Fields from default config.
  public static final Integer DEFAULT_CODE = 17471;
  public static final Integer DEFAULT_PORT = 5000;
}

 

在使用的时候:

  public final String versionName = BuildConfig.VERSION_NAME;//版本号
  public final String systemVersion = Build.VERSION.INCREMENTAL;//系统版本号
  public final String buildTime= BuildConfig.BUILD_TIME;//编译的时间戳

 

SVN客户端和服务端软件 客户端为TortoiseSVN_x64同时还包括语言包; 服务端为VisualSVN-Server-3.5.7-x64 立即下载

相关推荐

银河麒麟服务器操作系统V10 SP1:跨架构激活与设备更换无忧指南

本文详细解析了银河麒麟服务器操作系统V10 SP1的跨架构激活新特性。该特性彻底解除了授权与CPU架构的绑定,允许同一份授权在x86、ARM、龙芯等不同架构服务器间灵活使用。文章提供了从新设备激活到硬件更换后保持激活状态的全流程实战指南,并分享了内网环境部署等高级技巧,助力企业简化运维、提升硬件资源管理灵活性。

ff678的博客 353

android app 版本名添加时间,Android Studio打包apk自动获取SVN号、时间、版本号、版本名称...

备注:打包之前一定要记得首先从svn update一下代码 这样才能保证打包的svn号是当前最新的SVN号一、根目录下build.gradle文件配置// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories ...

weixin_29356815的博客 880

使用Label Studio标注车牌数据:YOLOv26模型训练指南

在计算机视觉领域,数据标注是模型训练的基础环节,直接影响最终模型的识别精度。Label Studio作为专业的标注工具,支持多种标注类型和格式导出,特别适合目标检测任务的数据准备。通过多边形标注技术,可以精确捕捉车牌的四个角点,生成旋转矩形框(OBB)标注数据,这种标注方式相比传统水平框能更好地处理倾斜车牌场景。标注完成后,数据可导出为YOLO格式,直接用于YOLOv26等先进目标检测模型的训练。在实际工程中,合理的标注策略和严格的质量控制能显著提升车牌识别模型在复杂场景下的鲁棒性,适用于智能交通、停车场管

chuozhi7142的博客 904

Android Studio打包apk自动获取SVN号、时间、版本号、版本名称

备注:打包之前一定要记得首先从svn update一下代码 这样才能保证打包的svn号是当前最新的SVN号 一、根目录下build.gradle文件配置 // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { mavenCentral() google()...

StarShine 712

Coding Plan:程序员真实工作的可执行编码决策框架

Coding Plan 是一种面向工程实践的编码决策方法论,它超越传统学习路径,聚焦于代码在真实业务系统中的上下文对齐、影响控制与可演进性保障。其核心在于将模糊的开发直觉转化为可度量、可验证、可协作的日常动作,涵盖目标对齐、上下文锁定、验证闭环、协作契约和演进预留五大锚点。结合2026年AI辅助编码新范式,它强调将大模型作为‘上下文翻译器’而非代码生成器,并通过分钟级工作块、技术债主动发行、可观测性前置等机制,显著提升交付确定性与系统长期健康度。本文详解该框架的底层逻辑与落地实践。

weixin_33326218的博客 440

SuperPoint + LightGlue实战:低纹理墙面重建保姆级教程(附完整代码)

本文提供了一份针对低纹理墙面三维重建的实战教程。通过详细解析SuperPoint与LightGlue的核心参数调优,指导读者如何有效提取并匹配低纹理目标的特征点,并结合COLMAP完成从稀疏到稠密的重建流程,最终实现高精度建模。

weixin_29034963的博客 225

buildconfig.java出错_如何在我的Android项目上修改BuildConfig.java?

我正在开设一个在线课程,我有这些代码:String baseUrl = "http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7";String apiKey = "&APPID=" + BuildConfig.OPEN_WEATHER_MA...

weixin_35886660的博客 545

推荐系统(1):推荐系统评测

对于可以离线优化的指标,我个人的看法是应该在给定覆盖率、多样性、新颖性等限制条件下,尽量优化预测准确度。用一个数学公式表达,离线实验的优化目标是:最大化预测准确度使得 覆盖率 > A多样性 > B新颖性 > C其中,A、B、C的取值应该视不同的应用而定。

数据不会骗人 2527

svn 客户端 android

在Android平台上使用SVN客户端 引言 在软件开发中,版本控制系统(Version Control Systems, VCS)用于管理代码的更改历史,其中Subversion(SVN)是一种广泛使用的集中式版本控制系统。对于Android开发者而言,集成SVN客户端至关重要,能够提高团队协作效率,保障代码管理的规范性...

weixin_36978543的博客 627

UG\NX二次开发 使用UF_CURVE_create_ocf_feature函数创建“在面上偏置”特征

使用UF_CURVE_create_ocf_feature函数创建“在面上偏置”特征。

王牌飞行员_里海的博客 850

Flink 运维监控与指标采集实战(Prometheus + Grafana 全流程)

Flink运维监控在实时计算场景中至关重要,因为Flink作业需要7×24小时稳定运行,对性能、资源、故障感知和状态变化的实时监控是保障系统稳定的关键。Flink自带的Metrics系统提供了基本的监控能力,但为了更全面的监控,Prometheus+Grafana成为最主流的解决方案。通过配置PrometheusReporter和Grafana仪表盘,可以实现对Flink作业的全面监控,包括CPU、内存、吞吐量、Checkpoint状态、KafkaSink性能等关键指标。此外,自定义指标采集和报警机制的配置

晴天彩虹雨的博客 1369

Android安卓应用版本命名规范

Android 设置APP版本号 (1) 在清单文件AndroidManifest.xml中manifest 标签节点中加入android:versionCode和android:versionName的值即可设置应用的版本号。如以下代码: (2) build.gradle(Module:app)配置文件可以同样设置版本号 (注意:推荐使用build.gradle设置版本号,因为一个方便在bui...

快乐李同学的博客 5732

44、单级静态电流消耗最小化方法及功率优化比较器设计

本文探讨了单级静态电流消耗最小化方法及功率优化的多米诺逻辑比较器设计。通过分析类“AB”输入CMOS差分对电路,提出利用补偿电流源实现高低电流模式切换,提升运算放大器性能;结合VTCMOS与时钟门控技术,在90nm CMOS中设计低功耗比较器,并采用多米诺逻辑提高速度与能效。通过对比传统与改进型多米诺逻辑的静态功耗、动态功耗、延迟和PDP,验证了所提方案在高性能与低功耗方面的优势,适用于便携式设备等对能效要求严苛的应用场景。

pp12345的博客 122

android 获取app版本号,Android Studio打包apk自动获取SVN号、时间、版本号、版本名称...

备注:打包之前一定要记得首先从svn update一下代码 这样才能保证打包的svn号是当前最新的SVN号一、根目录下build.gradle文件配置// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories ...

weixin_39622419的博客 415

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android studio 配置 SVN 详解

这篇文章主要介绍了Android Studio与SVN版本控制程序的协作使用指南,使用Gradle插件自动填写SVN号并发布到指定目录的方法,需要的朋友可以参考下

小T的博客 3497

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SVN版本号

1.脚本bat中,获取svn最新版本号:2.在安卓项目中app目录下build.gradle中获取svn版本号:try{exec {

crystal199708的博客 208

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

svn号: 1、classpath增加依赖:       classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11'      (可查找下最新的版本) 2、在主项目(app的模块目录)下的build.gradle中增加: android {....} def getSvnRevision(

ceabie的专栏 2716

Jenkins+Gradle 实现android端app自动构建

1、进入如下界面引入插件,包括GradlePlugin、SVN Publisherplugin、VersionNumber Plug-In       主界面->系统管理-》管理插件  2、进入如下界面配置jdk、gradle的存放路径路径;注意此处使用的gradle版本需和开发源码中使用版本一致;       主界面->系统管理->Global Tool Configurati

飞鱼码头 2107

AndroidStudio SVN 文件忽略

因为安卓工程中有很多内容是通过gradle 和build 工具构建出的安装程序,这些程序占用了大量SVN空间拖累上传,下载速度. 基本忽略掉以下6个内容就可以了包括: .gradle  .idea app/build local.properties *.iml 方法一和方法二是等效的 方法一: 打开.idea 文件夹下的worksapce.xml,以下代码直接拷贝即可: &...

startCrazyActivity的博客 7012

Jenkins+Gradle+AS+SVN持续化集成-Android自动化构建APP

先看下最终实现的效果图:功能描述:可以选择不同环境不同版本不同的SVN分支,打包APP,并实现打包完成后自动上传到蒲公英生成安装二维码总体步骤如下:1、  下载最新版Jenkins的war包,并安装JDK(JDK8及以上版本)2、  运行Jenkins,并安装必须插件,配置好项目执行的Jenkins参数3、  配置项目build.gradle里面的脚本4、  编写脚本,使安装包上传到蒲公英平台生成...

aceaddi的专栏 1243

Android Studio 与svn

在Android Studio开发工具中,开发app与使用eclipse时会有很大差异,尤其是文件表较多!但是在使用svn时究竟是哪些文件是必须的呢? 在 Android studio中,项目结构有如下文件及文件夹:app nanjing.iml build.gradle .gradle gradlew.bat local.properties settings.gradle big

Go贝壳 1485

Android Studio开发,加入SVN管理

使用Android Studio开发,加入SVN管理时,项目需要ignore的文件有: .gradle文件夹下的所有文件, .idea文件夹下的所有文件, app/build文件夹下的所有文件, *.iml文件, build文件夹下的所有文件, gradle.properties文件和local.properties文件。通过点击右边的"+"添加,"-" 删除 点击右边的"+",弹出

jamin-it的专栏 792

Android开发工具如何选择

作为新手如何选择Android开发工具,下面对常用的几款工具做一下对比。

qq_30725967的博客 4727

Android开发SVN版本控制忽略文件列表--android studio

Android项目需要协同一起开发时,就需要保证项目同步完整性。 SVN忽略文件列表: .gradle .idea build local.properties *.iml app/*.iml app/build.gradle app/build

技术分享 856

android studio SVN 更新后异常

ERROR: Project with path ‘:TreeviewLib’ could not be found in project ‘:app’. 关于安卓项目module引用的问题 从svn更新队友代码后 工程无法正确编译,异常:ERROR: Project with path ‘:TreeviewLib’ could not be found in project ‘:app’. ...

雕龘惢 340

Android 开发报错和配置记录

Gradle 版本与 Java (JDK) 版本不兼容。在 Android Studio 中,点击菜单栏:File > Settings… (Windows)。导航到:Build, Execution, Deployment > Build Tools > Gradle。找到 Gradle JDK 选项。在下拉菜单中,选择合适的 JDK。点击 OK 保存。最后点击顶部的 “Sync Project with Gradle Files” 图标(🐘图标)重新同步。

BLU_111的博客 890
上一篇: Linux下的objective-c 的简单使用和一些问题
下一篇: 解決APP启动短暂白屏或者黑屏的问题
葫芦娃二娃
博客等级 码龄15年 1850粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值