我有上传到Subversion / SVN repo的应用程序。是否可以使用脚本以某种方式更改AndroidManifest
中存储的应用程序版本代码?我的意思是在结账/更新期间/之后?
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mypackage"
android:versionCode="100000"
android:versionName="1.0">
答案 0 :(得分:4)
SVN有keyword substitution,您可以使用它将修订号放在文件中。但是,这将导致清单文件本身上次更改时的修订,这不是您想要的。
实现所需目标的最佳方法是从构建脚本中调用svnversion
,然后将输出嵌入到清单文件中。您可以在版本控制下拥有manifest.template
文件,构建脚本可以使用该文件生成真正的清单文件。在模板中放置占位符字,并将其替换为使用svnversion
获得的修订号。
编辑:在Eclipse中你可能会use an Ant script, and invoke it before the normal build。链接的示例生成带有修订号的类文件,但您也可以以非常类似的方式生成清单文件。
答案 1 :(得分:4)
我通过添加额外的构建目标来完成此操作 - 因此在构建项目时版本代码会增加,而不是在您提交SVN时。这些是使其在IntelliJ IDEA中工作的说明。
首先,在项目的根目录中添加一个名为svn-revision.build.xml
的新文件,其中包含以下内容:
<project default="svn-revision">
<target name="svn-revision">
<exec executable="sh" outputproperty="revision">
<arg value="-c" />
<arg value="svnversion | sed -e 's/^[^:]*://;s/[A-Za-z]//'" />
</exec>
<echo>Revision (app): ${revision}</echo>
<replaceregexp file="AndroidManifest.xml" match='android:versionCode="([^".]+)(\.[^"]*)?"' replace='android:versionCode="${revision}"' />
</target>
</project>
然后在菜单中转到View > Tools > Ant Build
,然后按下窗口中的小+
按钮并添加新创建的文件。单击Ant Build窗口中的绿色“运行”按钮将立即运行该脚本。要在每次构建时运行脚本,您需要将'svn-revision'目标设置为默认目标。
答案 2 :(得分:0)
您可以在构建时使用默认Android构建脚本提供的xpath Ant目标来获取当前值,然后使用Ant替换。
答案 3 :(得分:0)
SVN方法很好,但不一定适合所有人。我更喜欢控制app versionName和versionCode increment ,所以我做了自己的Java简单应用来做到这一点
特点:
可在此处获得: android manifest build number