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输出?
一种可能的方法.在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,有各种选项,构建maven或ant可能是替代方案,但让我们使用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)
仅提供一般建议,您没有提及您的版本控制系统。
在“关于”框的文本中嵌入适当的标题(例如 $Version:$)。当您提交时,新版本 # 将被存储,并且当您构建时将显示该值。
[编辑]
1.将“关于”框创建为单独的源,仅在增加版本时才将其签入。
2.将您自己的版本嵌入头文件中(并且不要忘记更改它),然后在您的“关于”框中使用该版本字符串(作为示例extern string *)
[/edit]