【Android】使用Gradle打包时,获取svn的版本号,删除unalign.apk文件,获得版本号,并设定在打包的文件名称中
16lz
2021-01-24
Gradle打包的文件名添加svn版本信息
为了获取SVN版本号,我们要引入一个第三方的库,这个库可以获取svn的信息。
1、首先在projece 的build.gralde中的dependencies中添加svnkit这个依赖:
dependencies { classpath 'com.android.tools.build:gradle:1.2.3' classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11' }
2、利用这个库来在编译的时候获取svn的信息的。
2.1、首先在module的build.gradle最上方添加
import org.tmatesoft.svn.core.wc.*apply plugin: 'com.android.application'
这样就把svnkit这个库引入过来了。
2.2、再添加一个获取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(); }
2.3、使用svn版本号参与文件命名
//重命名打包文件 android.applicationVariants.all { variant -> variant.outputs.each { output -> def apk = output.outputFile; def releaseTime = releaseTime(); def channelName = variant.productFlavors[0].name; def versionName = getVersionNameFromManifest(); def newName = channelName + "_" + versionName + "_" + releaseTime + "_" + getSvnRevision(); output.outputFile = new File(apk.parent, newName + ".apk"); } }
3、删除打包产生的unalign.apk文件
//删除 unligned 文件 android.applicationVariants.all { variant -> variant.assemble.doLast { variant.outputs.each { output -> println "aligned " + output.outputFile println "unaligned " + output.packageApplication.outputFile File unaligned = output.packageApplication.outputFile; File aligned = output.outputFile if (!unaligned.getName().equalsIgnoreCase(aligned.getName())) { println "deleting " + unaligned.getName() unaligned.delete() } } } }
4、获得配置文件中的版本号
//从androidManifest.xml中获取版本号def getVersionNameFromManifest() { def manifestParser = new com.android.builder.core.DefaultManifestParser() return manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)}
5、打包时间
//打包时间def releaseTime() { return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC"))}
更多相关文章
- ym——Android从零开始(1)(Android体系架构及认识)(新)
- Android应用程序目录定义及使用方法
- android中Manifest文件的语法层次
- Android(安卓)性能分析工具之TraceView
- Android(安卓)DrawerLayout 高仿QQ5.2双向侧滑菜单
- Android(安卓)studio Error:Cause: org/gradle/api/publication/
- ANE 在 Android(安卓)上的应用
- android之NDK环境小试牛刀
- Android(安卓)创建桌面快捷方式