每次在 Eclipse 中构建 Android 应用程序时,有没有办法自动增加版本代码?
根据http://developer.android.com/guide/publishing/versioning.html ,您必须在 AndroidManifest.xml
中手动增加您的版本代码。
我了解,您必须在每次构建之前运行一个脚本,例如解析 AndroidManifest.xml 文件,找到版本号,将其递增并在构建本身开始之前保存文件。但是,我不知道 Eclipse 如何以及是否支持在构建之前/之后运行脚本。
我找到了this article关于配置 ant builder,但这不完全是关于 Android,我担心这会弄乱 Android 的预定义构建步骤?
应该是通病,你是怎么解决的?
好吧,可以手动执行此操作,但是一旦您忘记执行此任务,您就会得到具有相同编号的不同版本,并且整个版本控制毫无意义。
最佳答案
我做到了。下面是我为下一个人做的事情(使用 Eclipse):
1) 创建一个外部控制台可执行文件,它将向 AndroidManifest.xml 写入新版本代码:(我的是 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(@"(?<A>android:versionCode="")(?<VER>\d+)(?<B>"")", 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 { }
}
}
}
除此之外:任何 c-sharp 编译器都可以构建这个应用程序,您不需要 Visual Studio 甚至 Windows
*.cs
文件(我的命名为:AndroidAutoIncrementVersionCode.cs
)*.cs
文件的位置c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc AndroidAutoIncrementVersionCode.cs
(请参阅:.NET 或 Mono 了解更多信息)恭喜,你刚刚构建了一个没有任何工具的 C# 应用,它应该在同一目录下自动生成 AndroidAutoIncrementVersionCode.exe
**里程可能不同,路径可能不同,不需要购买,在禁止的地方无效,我添加这个是因为 C# 很棒,人们错误地认为它有 MS 锁定,你可以很容易地把它翻译成另一个语言(但我不会为你这样做;)。顺便说一句,任何 .NET 编译器的任何版本都可以工作,我将代码调整为最小公分母...*
结束
2) 在构建过程中运行可执行文件: a) 转到项目属性
b) 在属性中,转到“Builders” -> “New...”
c) 选择“程序”
d) 在“主”选项卡中选择程序位置(我还将工作目录设置为安全的)并根据需要为其命名。
e) 在“刷新”选项卡中选择“完成时刷新资源”和“选定资源”选项 - 这将在我们编写 list 后刷新它。
f)在“构建选项”选项卡中,您可以关闭“分配控制台”,因为您没有输入和输出,然后仅选择“在手动构建期间”和“在自动构建期间”取消选择“清理后”,如果它被检查。然后选择“指定相关资源的工作集”并单击“指定资源...”按钮。在“编辑工作集”对话框中,在对话框中找到您的“AndroidManifest.xml”文件并检查它,然后点击“完成”
f) 现在在“编辑配置对话框”和应用程序的属性中点击“确定”,选择新创建的构建器,然后继续点击“向上”直到它位于列表顶部,这样自动增量首先运行,并且不会触发意外的不同步状态或重建。一旦您创建的新构建器位于列表顶部,单击“确定”即可完成。
https://stackoverflow.com/questions/6758685/