J'ai accompli ça. Et voici comment je l'ai fait pour le prochain (en utilisant Eclipse) :
1) Créer un exécutable console externe qui va écrire un nouveau code de version dans AndroidManifest.xml : (le mien est en C#)
using System.IO;
using System.Text.RegularExpressions;
namespace AndroidAutoIncrementVersionCode
{
class Program
{
static void Main(string[] args)
{
try
{
string FILE = @"AndroidManifest.xml";
string text = File.ReadAllText(FILE);
Regex regex = new Regex(@"(?android:versionCode="")(?\d+)(?"")", RegexOptions.IgnoreCase);
Match match = regex.Match(text);
int verCode = int.Parse(match.Groups["VER"].Value) + 1;
string newText = regex.Replace(text, "${A}" + verCode + "${B}", 1);
File.WriteAllText(FILE, newText);
}
catch { }
}
}
}
**
remarque : n'importe quel compilateur c-sharp peut construire cette application, vous n'avez pas besoin de Visual Studio ou même de Windows
****2. si vous ne l'avez pas déjà, installez le runtime .NET (Mono fonctionnera, lien) (lien vers le framework .NET 2.0 de Microsoft, 2.0 est le plus petit téléchargement, toute version >= 2.0 fonctionne)
- copiez ce code dans un fichier
*.cs
(j'ai nommé le mien : AndroidAutoIncrementVersionCode.cs
)
- ouvrez un terminal et naviguez jusqu'à l'emplacement où vous avez créé votre fichier
*.cs
- construisez le fichier en utilisant cette commande (sur Windows, similaire pour Mono mais changez le chemin du compilateur) :
c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc AndroidAutoIncrementVersionCode.cs
_(voir : .NET ou Mono pour plus d'informations)_
-
félicitations, vous venez de construire une application C# sans aucun outil, elle aurait dû générer AndroidAutoIncrementVersionCode.exe
dans le même répertoire automatiquement
**les résultats peuvent varier, les chemins peuvent être différents, aucun achat nécessaire, null là où c'est interdit, j'ai ajouté cela parce que C# est génial, et les gens pensent à tort qu'il est verrouillé par MS, vous pourriez tout aussi facilement traduire cela dans une autre langue (mais je ne vais pas le faire pour vous ;). au fait, n'importe quelle version de n'importe quel compilateur .NET fonctionnera, j'ai adapté le code pour le moins commun...*
fin de la remarque
2) Exécuter l'exécutable pendant le processus de construction : a) Aller aux propriétés du projet
b) Dans les propriétés, aller à "Builders" -> "Nouveau..."
c) Choisir "Programme"
d) Dans l'onglet "Principal", sélectionner l'emplacement du programme (j'ai également défini le répertoire de travail pour être sûr) et donnez-lui un nom si vous le souhaitez.
e) Dans l'onglet "Actualiser", sélectionner l'option "Actualiser les ressources à la fin" et "La ressource sélectionnée" - cela actualisera le manifeste après que nous l'ayons écrit.
f) Dans l'onglet "Options de construction", vous pouvez désactiver "Allouer une console" car vous n'avez pas d'entrée ni de sortie, puis sélectionner uniquement "Pendant les constructions manuelles" et "Pendant les constructions automatiques", désélectionner "Après un nettoyage" s'il est coché. Ensuite, sélectionnez "Spécifier un ensemble de ressources pertinentes" et cliquez sur le bouton "Spécifiez les ressources...". Dans la boîte de dialogue "Modifier l'ensemble de travail", localisez votre fichier "AndroidManifest.xml" dans la boîte de dialogue et cochez-le, puis cliquez sur "Terminer"
f) Maintenant appuyez sur "OK" à l'intérieur de la "Boîte de dialogue de modification de la configuration" et dans les propriétés de votre application, sélectionnez le constructeur nouvellement créé, et continuez à cliquer sur "Haut" jusqu'à ce qu'il soit en haut de la liste, de cette façon l'auto-incrément se lance en premier, et ne déclenche pas d'états désynchronisés ou de reconstructions accidentelles. Une fois que le nouveau constructeur que vous avez créé est en haut de la liste, cliquez sur "OK" et vous avez terminé.
**
0 votes
Simplement pensé, on pourrait utiliser des hooks de commit dans le système de contrôle de version pour incrémenter le code de version dans le manifeste ou même simplement remplacer le code de version par le numéro de révision. Cela pourrait également être acceptable
0 votes
Il semble que l'utilisation du numéro de révision SVN/CVS serait la seule solution. En effet, si le script se contente d'incrémenter le numéro dans le manifeste, les builds effectués par différents développeurs auraient des numéros croissants arbitraires et non synchronisés. Le numéro de révision est global.
0 votes
Vous pourriez le faire avec le
custom_rules.xml
dans ant. voir stackoverflow.com/a/20584169/1523910 sur comment le faire dans git0 votes
Voir stackoverflow.com/questions/17448565/…