Android使用gradle自动获取svn版本号
由于我们公司项目在内网开发版本控制使用的是svn,为了方便测试同学提bug,以及开发同学及时定位bug,需要自动获取svn版本号。亲测有效,
1、Project层下的  build.gradle  文件  引入svn插件
1 
  | classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11' 
  | 
 
在我的项目中如下:
1 2 3 4 5 6 7 8 9 10 11 
  | buildscript {     repositories {         jcenter()     }     dependencies {         classpath 'com.android.tools.build:gradle:3.0.0'         classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11'         // NOTE: Do not place your application dependencies here; they belong         // in the individual module build.gradle files     } } 
  | 
 
2、Module层下的  build.gradle  文件加入以下两个步骤中内容:
2.1、在文件第一行导包
1 
  | import org.tmatesoft.svn.core.wc.* 
  | 
 
2.2、定义函数
1 2 3 4 5 6 7 8 
  | 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.getCommittedRevision();     return revision.getNumber(); } 
  | 
 
在我的项目中整体如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 
  | import org.tmatesoft.svn.core.wc.* apply plugin: 'com.android.application' //通过svnKit自动获取svn版本号 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.getCommittedRevision()     return revision.getNumber() } android {     compileSdkVersion 23     buildToolsVersion '26.0.2'     aaptOptions.cruncherEnabled = false     aaptOptions.useNewCruncher = false     lintOptions {         abortOnError false     }     defaultConfig {         applicationId "com.citicbank.comb"         minSdkVersion 15         targetSdkVersion 16         versionCode  2         versionName "${getSvnRevision()}" //调用方法获取svn版本号   } 
  | 
 
3、java代码中获取svn版本号
主要是通过PackageManager获取PackageInfo,从而获取svn版本号,在需要svn版本号的地方,只需调用此方法即可
1 2 3 4 5 6 7 8 9 10 11 
  | public static String getVersionName(Context context) {         PackageManager packageManager = context.getPackageManager();         PackageInfo packInfo = null;         try {             packInfo = packageManager.getPackageInfo(context.getPackageName(), 0);         } catch (PackageManager.NameNotFoundException e) {             e.printStackTrace();         }         String version = packInfo.versionName;         return version;     } 
  | 
 
         
        
    
        
    最后更新时间:
        
        这里可以写作者留言,标签和 hexo 中所有变量及辅助函数等均可调用,示例:
http://suxianglun.github.io/2018/01/29/Android使用gradle自动获取svn版本号/