Bonjour à tous,

J'essai de modifier dynamiquement la valeur de versionCode du manifest. Je veux qu'elle soit égale à la valeur de la révision de mon projet sur subversion.

Après moulte recherche j'ai compris qu'il fallait utiliser un script ant. J'ai réussi produire quelque chose qui fonctionne :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<target name="update-svnversion">
	<exec outputproperty="build.svnversion" executable="svnversion">
			 <arg line="-n -c" />
 
			 <redirector>
				<outputfilterchain>
					<tokenfilter>
						<replaceregex pattern="[0-9]+\:" replace="" />
						<replaceregex pattern="[A-Z]+" replace="" />
					</tokenfilter>
				</outputfilterchain>
			</redirector>
	</exec>
	<property name="match.start" value="android:versionCode=&quot;"/>
	<property name="match.end" value="&quot;"/>
	<replaceregexp 
		file="AndroidManifest.xml"
		match="${match.start}.*${match.end}"
		replace="${match.start}${build.svnversion}${match.end}">
	</replaceregexp>
	<echo level="info">Version = ${build.svnversion}</echo>
</target>

j'ai placer le build.xml contenant ce xml à la racine , puis dans :
Properties => builders j'ai ajouté un builder ant qui utilise ce script.

Dans l'onglet targets pour Auto Build je choisi la target présenté si dessus.

A chaque build du projet , le manifest est bien mis à jour avec le dernier numéro de révision du projet.

Mon souçis c'est que du coup AndroidManifest.xml n'est jamais à jour par rapport à mon dépot :
  • Premier build => codeVersion = 1
  • Je commit => revision du dépot à 2 (manifest sur le dépot à 1)
  • Second build => manifest passe à 2 donc plus synchro avec celui à 1 sur le dépot.


Y'a t'il un moyen quelconque d'arriver à avoir un code local toujours synchro avec mon dépot ?
Je maîtrise pas du tout ant , du coup je dois passer à coter de pas mal de truc :/
Mon but final est d'avoir une page info dans l'appli affichant le numéro de version et de build (qui correspond à versionCode) , il donc important que versionCode corresponde bien à la version comitée