Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息

简介: 本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。

1. 前言

Android Studio的APP开发即便使用VERSION_CODE来记录版本信息,依旧觉得麻烦,希望找到一种在编译时,自动将版本信息无误的加入到APK中的方法,毫无疑问,这需要修改编译脚本来辅助实现,而在AS中,自然是通过gradle脚本来实现。本文及详细介绍实现的方法和步骤,以及最终的演示效果。

2. 实现方法

2.1 添加BuildConfig成员变量

文件名: tvass\gradle.properties
添加Buildconfig成员变量

GIT_COMMIT_ID=0
GIT_BRANCH_NAME=master
GIT_USER=empty

2.2 实现gradle接口函数

tvass\app\build.gradle
添加方法,用于给Buildconfig变量赋值

apply plugin: 'com.android.application'

//获取short版本的 git commit id
def getGitRevision() {
   
    return "git rev-parse --short HEAD".execute().text.trim()
}

//获取分支名称
def getGitBranch(){
   
    def branchName
    def branch =  "git branch --contains HEAD".execute().text.trim()
    def index = branch.indexOf('*')
    if(index == -1){
   
        branchName = "master"
    }else{
   
        branchName = branch.substring(index+2)
    }
    println "branchName  "+branchName
    return branchName
}

//获取编译人员 user.name
def getGitUser(){
   
    return "git config --global --get user.name".execute().text.trim()
}

2.3 关键部分

2.3.1 接口及接口转换

tvass\app\build.gradle
android的BuildTypes内,添加

buildTypes {
   
        release {
   

            //在Build.gradle执行期间,给新增的Buildconfig的成员变量赋值
            GIT_COMMIT_ID = getGitRevision()
            GIT_BRANCH_NAME = getGitBranch()
            GIT_USER = getGitUser()

            //定义给JAVA使用的接口名称、参数类型
            buildConfigField "String", "gitCommitId", "\"${GIT_COMMIT_ID}\""
            buildConfigField "String", "gitBranchName", "\"${GIT_BRANCH_NAME}\""
            buildConfigField "String", "getGitUser", "\"${GIT_USER}\""

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

        debug {
   

            //同楼上 release 说明
            GIT_COMMIT_ID = getGitRevision()
            GIT_BRANCH_NAME = getGitBranch()
            GIT_USER = getGitUser()

            buildConfigField "String", "gitCommitId", "\"${GIT_COMMIT_ID}\""
            buildConfigField "String", "gitBranchName", "\"${GIT_BRANCH_NAME}\""
            buildConfigField "String", "getGitUser", "\"${GIT_USER}\""

            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debug
        }
    }
2.3.2 实现Java接口

在自己的工具类中,添加Java函数,获取Git版本信息
文件:tvass\app\src\main\java\com\xxx\tvass\tool\Tools.java

import com.xxx.tvass.BuildConfig;
public class Tools {
   

     //调用 2.3.1 导出到java的接口
    public static String getGitVersion(){
   
        return  String.format(Locale.CHINA, "APP版本信息:VERSION_CODE=%d, VERSION_NAME=%s, " +
                        " Git CommitID=CL#%s,Branch:%s, Producted By:%s",
                BuildConfig.VERSION_CODE, BuildConfig.VERSION_NAME,
                BuildConfig.gitCommitId, BuildConfig.gitBranchName, BuildConfig.getGitUser);
    }
}

3. 调用演示

3.1 调用代码

public class BootBroadcastReceiver extends BroadcastReceiver {
   
    private static final String TAG = BootBroadcastReceiver.class.getSimpleName();

    @Override
    public void onReceive(Context context, Intent intent) {
   //18006

        RLog.i(TAG,"tvass: "+ Tools.getGitVersion());

       if (Intent.ACTION_LOCKED_BOOT_COMPLETED.equals(intent.getAction())) {
   

3.2 运行情况

3.2.1 分支情况:git brach -a
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。

安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindows

PS C:\Users\66176\Documents\works\mt9652\all_app\tvass> git branch -a
  master_combiecode
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/master_xxx
PS C:\Users\66176\Documents\works\mt9652\all_app\tvass>
3.2.2 提交记录:git lg
PS C:\Users\66176\Documents\works\mt9652\all_app\tvass> git lg
* 3516551 - (HEAD -> master, origin/master, origin/HEAD) 合并master与master_combiecode分支差异,添加APP版本打印 (16 hours ago) <zhoushang>
…… 省略 ……
* 501341c - init 20220713  (3 months ago) <zhoushang>
PS C:\Users\66176\Documents\works\mt9652\all_app\tvass>
3.2.3 成功的打印

11-18 09:40:38.373  5216  5216 I szhou   : \n
BootBroadcastReceiver-----tvass: \n
APP版本信息:VERSION_CODE=1, VERSION_NAME=1.0,  Git CommitID=CL#3516551,Branch:master, Producted By:zhoushang
相关文章
|
5月前
|
Shell 网络安全 开发工具
项目快速导入git
本文介绍了如何在本地初始化 Git 仓库并将代码提交到远程仓库(如 GitHub 或 Gitee)的基本流程。内容包括安装 Git、创建仓库、添加文件、提交更改以及推送代码到远程仓库的详细步骤,适合初学者快速掌握 Git 的基本使用方法。
584 1
|
6月前
|
API 开发工具 git
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
359 0
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
|
6月前
|
开发工具 git
使用Git下载指定版本或指定commit
使用Git下载指定版本或指定commit
|
7月前
|
存储 人工智能 缓存
Git Commit规范:为什么有些公司要求变更行数限制?·优雅草卓伊凡
Git Commit规范:为什么有些公司要求变更行数限制?·优雅草卓伊凡
314 3
Git Commit规范:为什么有些公司要求变更行数限制?·优雅草卓伊凡
|
8月前
|
Java Android开发
Android studio中build.gradle文件简单介绍
本文解析了Android项目中build.gradle文件的作用,包括jcenter仓库配置、模块类型定义、包名设置及依赖管理,涵盖本地、库和远程依赖的区别。
770 19
|
10月前
|
人工智能 前端开发 Java
用git rebase命令合并开发阶段中多条commit提交记录
通过 `git rebase`,可以合并多个提交记录,使开发历史更简洁清晰。操作分为 6 步:查看提交历史 (`git log --oneline`)、设置需合并的提交数 (`git rebase -i HEAD~N`)、修改动作标识为 `s`(squash)、保存退出编辑、调整提交信息、强制推送至远程仓库 (`git push -f`)。此方法适合清理本地无关提交,但若有团队协作或冲突风险,需谨慎使用以避免问题。
1824 60
|
8月前
|
JavaScript 前端开发 持续交付
实际工作中 Git Commit 代码提交规范是什么样的?
实际工作中 Git Commit 代码提交规范是什么样的?
761 7
|
9月前
|
前端开发 开发工具 git
Git报错处理:解决git commit时的lint-staged错误提示。
极好的,你对Git的lint-staged出了一个令人头疼的问题。让我们一起钻研一下,找到一种方法来解决一切。 首先,我们要确定你是在做什么操作时候遇到了问题。lint-staged通常在我们运行 git commit 时启动,它做的工作是在你提交之前运行一些指定的命令检查你的代码。当lint-staged报错,多半是因为检查未通过,或者它试图运行的命令存在问题。 让我们以一种图解的方式来描绘一下这个过程,就像canvas上的画面那样。git正在温柔的将你的修改捆绑起来,准备提交。突然,lint-staged走了出来,并开始盘问着Git,寻找可能的错误。如果lint-staged找到了什么
1037 24
|
Android开发
Android笔记:SharedPreference中editor.apply();和editor.commit();的区别
Android笔记:SharedPreference中editor.apply();和editor.commit();的区别
451 0
|
3月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
402 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章