¿Cómo agregar el número svn rev a Android APK usando Gradle?

¿Cómo agrego el número de revisión de subversión a un file APK de Android usando Gradle? Ex. AppName-1.1.123.apk, donde 123 es el número de revisión de subversión. Estoy usando Android studio.

Gracias Markus

Agregue este classpath de dependencia en el cierre de las dependencies de su file raíz build.gradle

classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.7.11' 

Se verá así

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.0.0' classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.7.11' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } 

Ahora es el momento de hacer cambios en el file build.gradle de su module

 import org.tmatesoft.svn.core.wc.* apply plugin: 'com.android.application' android { //YOUR OTHER CONFIGURATION applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, output.outputFile.name.replace(".apk", "-${variant.versionName}."+ getSvnRevision() + ".apk")) } } } dependencies { //YOUR DEPENDENCIES HERE } 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.getRevision(); return revision.getNumber(); } 

No uso SVN en estos días, pero he cumplido y ejecuto este script en mi entorno local con un valor de encoding y funciona bien para mí. Déjame saber que también funciona para ti.

Aquí está el código que puse en el file build.gradle "raíz" que lo resolvió:

 import org.tmatesoft.svn.core.wc.* buildscript { repositories { mavenCentral() } dependencies { classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.7.11' } } 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.getRevision(); return revision.getNumber(); } allprojects { version = '1.2.3.' + getSvnRevision() } 

El código de 'pyus13' y 'Markus K' obtiene la revisión svn actual de la copy de trabajo. Esto es para la mayoría de los casos está bien. Pero si desea get la última revisión del server (que puede ser mayor que la revisión de su copy de trabajo) debe get la revisión SVN del server y no de su copy de trabajo:

 import org.tmatesoft.svn.core.wc.* import org.tmatesoft.svn.core.* import org.tmatesoft.svn.core.io.* import org.tmatesoft.svn.core.auth.* import org.tmatesoft.svn.core.internal.io.fs.FSRepositoryFactory; import org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory; import org.tmatesoft.svn.core.internal.io.svn.SVNRepositoryFactoryImpl; ... project.ext { svnUser = 'user' svnPwd = 'topsecret' } ... /**************************************************************************** * Add SVN revision number to version ****************************************************************************/ buildscript { repositories { mavenCentral() } dependencies { // needed for getting current SVN rev nmbr classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.14' } } /** Gets the current subversion revision number. */ def getSvnRevision() { // init needed stuff for connecting SVN server DAVRepositoryFactory.setup(); SVNRepositoryFactoryImpl.setup(); FSRepositoryFactory.setup(); // getting SVN Url from local working copy ... ISVNOptions options = SVNWCUtil.createDefaultOptions(true); SVNClientManager clientManager = SVNClientManager.newInstance(options); SVNStatusClient statusClient = clientManager.getStatusClient(); SVNStatus status = statusClient.doStatus(projectDir, false); SVNURL url = status.getRepositoryRootURL(); // connecting SVN server and getting last revision number SVNRepository repository = SVNRepositoryFactory.create(url); ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(svnUser, svnPwd); repository.setAuthenticationManager(authManager); return repository.getLatestRevision(); } ...