zoukankan      html  css  js  c++  java
  • 如何把apk编译时间和最后次git commit的sha值,写入到app中

    需求背景:我们修复Bug的时候,频繁提交APK包,导致测试同学搞不清哪个包才是最新的

    比如一个版本3.0.1,我们可能后续基于这个版本陆续提交了好几个修复包

    同时,如果服务端ip地址能在界面上配置的话,更好了

    以上都是基于debug模式下的,线上版本不会出现这些选项

    思路:git每次提交commit的时候,都会创建一个唯一的sha串,我们拿这个作为内部版本号。

    先给上最终效果图

    那么如何在gradle编译的时候,就把这些信息写入到app中呢

    关键字 BuildConfig类。

    在build.gradle里面,按照下面注释的地方加入自定义的任务。

    tip:必须要把git的bin文件夹加入到系统变量里面,重启下电脑,不然android studio认不出

    apply plugin: 'com.android.application'
    
    //创建当前时间字符创 比如 0411_1213 表示 4月11号,12点13分
    def buildTime() {
        def date = new Date()
        def formattedDate = date.format('MMdd_HHmm')
        return formattedDate
    }
    
    //获取文件夹最后一次git commit的sha值
    def gitSha = 'git rev-parse --short HEAD'.execute([], project.rootDir).text.trim()
    
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
    
        defaultConfig {
            applicationId "com.example.administrator.myapplication"
            minSdkVersion 14
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
            //在BuildConfig里面创建BUILD_TIME变量,代表apk编译时间
            buildConfigField "String", "BUILD_TIME", ""${buildTime()}""
            //在BuildConfig里面创建GIT_SHA变量,代表本项目最新git的commit的值
            buildConfigField "String", "GIT_SHA", ""${gitSha}""
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.2.1'
        compile 'com.android.support:design:23.2.1'
        compile 'io.reactivex:rxandroid:1.1.0'
        compile 'io.reactivex:rxjava:1.1.2'
    }

    重新编译后,我们发现BuildConfig类里面多了我们定义好的两个属性

    然后在要用的地方,引用这俩属性就OK了

  • 相关阅读:
    Analysis Services features supported by SQL Server editions
    Azure DevOps to Azure AppServices
    Power BI For Competition
    Win10开机“提示语音”以及”随机播放音乐”
    Azure DevOps
    Allow Only Ajax Requests For An Action In ASP.NET Core
    Mobile CI/CD 101
    Configure SSL for SharePoint 2013
    AWS Step Function Serverless Applications
    Cordova Upload Images using File Transfer Plugin and .Net core WebAPI
  • 原文地址:https://www.cnblogs.com/kimmy/p/5365030.html
Copyright © 2011-2022 走看看