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版本号/