android - Android 应用中的自动递增版本代码

每次在 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

  1. 如果您还没有,请安装 .NET 运行时 (Mono will work, link) (link to MS's .NET framework 2.0, 2.0 is the smallest download, any version >= 2.0 is fine)
  2. 将此代码复制到 *.cs 文件(我的命名为:AndroidAutoIncrementVersionCode.cs)
  3. 打开命令提示符并导航到您创建 *.cs 文件的位置
  4. 使用此命令构建文件(在 Windows 上,与 Mono 类似,但更改编译器路径): c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc AndroidAutoIncrementVersionCode.cs (请参阅:.NET 或 Mono 了解更多信息)
  5. 恭喜,你刚刚构建了一个没有任何工具的 C# 应用,它应该在同一目录下自动生成 AndroidAutoIncrementVersionCode.exe

    **里程可能不同,路径可能不同,不需要购买,在禁止的地方无效,我添加这个是因为 C# 很棒,人们错误地认为它有 MS 锁定,你可以很容易地把它翻译成另一个语言(但我不会为你这样做;)。顺便说一句,任何 .NET 编译器的任何版本都可以工作,我将代码调整为最小公分母...*

结束

2) 在构建过程中运行可执行文件: a) 转到项目属性

b) 在属性中,转到“Builders” -> “New...”

c) 选择“程序”

d) 在“主”选项卡中选择程序位置(我还将工作目录设置为安全的)并根据需要为其命名。

e) 在“刷新”选项卡中选择“完成时刷新资源”和“选定资源”选项 - 这将在我们编写 list 后刷新它。

f)在“构建选项”选项卡中,您可以关闭“分配控制台”,因为您没有输入和输出,然后仅选择“在手动构建期间”和“在自动构建期间”取消选择“清理后”,如果它被检查。然后选择“指定相关资源的工作集”并单击“指定资源...”按钮。在“编辑工作集”对话框中,在对话框中找到您的“AndroidManifest.xml”文件并检查它,然后点击“完成”

f) 现在在“编辑配置对话框”和应用程序的属性中点击“确定”,选择新创建的构建器,然后继续点击“向上”直到它位于列表顶部,这样自动增量首先运行,并且不会触发意外的不同步状态或重建。一旦您创建的新构建器位于列表顶部,单击“确定”即可完成。

https://stackoverflow.com/questions/6758685/

相关文章:

java - Android 构建失败 - java.lang.IllegalArgumentExc

build - 如何更改 Gradle 下载位置

maven-2 - Maven - 如何将任意类路径条目添加到 jar?

build - 如何从 Jenkins 的另一份工作中提升特定的内部版本号?

jenkins - 如何在 Jenkins 中安排构建?

c++ - 在 CMake 中添加多个可执行文件

visual-studio - Visual Studio 构建速度非常慢

java - 如何让 Maven 使用正确的存储库?

c++ - Visual Studio 2010 不会自动链接来自依赖项的项目中的静态库,因为它应该

build - Lisp 可执行文件