在Android APK中嵌入版本细节

Wil*_*ill 9 java eclipse version-control android

我的代码存储在SVN版本控制中.我使用Eclipse来构建我的Android应用程序.

在我的应用程序中,我有一个关于盒子的东西.我想在此显示正确的源代码控制版本/标记/其他内容.

有没有一种方法可以自动执行此操作,以便我的约会框中的版本字符串始终是正确的,或者这是我每次提交时都需要手动编辑的内容?

关于$ keywords $的早期答案的Thx.

设置SVN属性svn:keywords,以Rev不扩大private String m_svn_rev = "$Rev:$"我提交每次文件.

SVN是一个文件版本控制系统.

相反,我想知道我是否可以以某种方式预处理Android构建中的某些文件来注入svnversion输出?

Die*_*ano 7

一种可能的方法.在AndroidManifest.xml中,向您的活动添加元数据以保留修订版或您想要使用的任何内容

<activity android:name="SampleActivity">
    <meta-data android:value="$Rev: 164 $" android:name="com.example.version" />
</activity>
Run Code Online (Sandbox Code Playgroud)

然后在你的活动中

try {
    final ActivityInfo ai = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
    final String version = (String)ai.metaData.get("com.example.version");
    System.out.println("version: " + version);
} catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

您可能还想android:versionName="$Rev$"在清单中设置.

要自动化增加版本号android:versionCode和提交的过程AndroidManifest.xml,有各种选项,构建mavenant可能是替代方案,但让我们使用Eclipse和ADT.

首先,在项目中添加一个构建器(我的项目 - >属性 - >构建器)

替代文字

此构建器应调用android-increment-manifest-version使用项目AndroidManifest.xml作为参数

替代文字

android-increment-manifest-version脚本就像

#! /bin/bash
# android-increment-manifest-version:
# increment the version number found in the AndroidManifest.xml file
# (android:versionCode="n") in place and commit it to subversion.
#
# Copyright (C) 2010 Diego Torres Milano - http://dtmilano.blogspot.com

usage() {
    echo "usage: $PROGNAME AndroidManifest.xml" >&2
    exit 1
}

PROGNAME=$(basename $0)

if [ "$#" -ne 1 ]
then
    usage
fi

MANIFEST="$1"

perl -npi -e 's/^(.*android:versionCode=")(\d+)(".*)$/"$1" . ($2+1) . "$3"/e;' $MANIFEST
svn ci -m "Version incremented" $MANIFEST
Run Code Online (Sandbox Code Playgroud)


Kev*_*imm 1

仅提供一般建议,您没有提及您的版本控制系统。

在“关于”框的文本中嵌入适当的标题(例如 $Version:$)。当您提交时,新版本 # 将被存储,并且当您构建时将显示该值。

[编辑]
1.将“关于”框创建为单独的源,仅在增加版本时才将其签入。
2.将您自己的版本嵌入头文件中(并且不要忘记更改它),然后在您的“关于”框中使用该版本字符串(作为示例extern string *
[/edit]