2011-02-08 62 views
9

我有應用程序上傳到Subversion/SVN回購。是否可以使用腳本以某種方式更改存儲在AndroidManifest中的應用程序版本代碼?我的意思是在結帳/更新期間/之後?如何在AndroidManifest中自動執行版本代碼增量?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="mypackage" 
      android:versionCode="100000" 
      android:versionName="1.0"> 

回答

4

SVN有keyword substitution,您可以使用它來將修訂號置於文件中。但是,這會在清單文件本身最後一次更改時導致修訂,這不是您想要的。

要達到目標的最佳方法是從構建腳本中調用svnversion,並將輸出嵌入到清單文件中。您可以在版本控制下使用manifest.template文件,您的構建腳本可以使用該文件生成真實的清單文件。在模板中放置一個佔位符字,並用svnversion獲取的修訂號替換它。

編輯:在Eclipse中你可能會use an Ant script, and invoke it before the normal build。鏈接的例子會生成一個包含版本號的類文件,但您也可以以非常類似的方式生成清單文件。

+0

一個會如何,如果他們使用Eclipse做任何想法? – Felix 2011-02-08 13:00:18

+0

我也很高興知道如何使用Intellij IDEA – barmaley 2011-02-09 06:22:32

0

您可以在構建時使用默認Android構建腳本提供的xpath Ant目標來獲取當前值,然後使用Ant替換。

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」目標設置爲默認目標。

0

SVN方法很好,但不一定適合每個人。我不喜歡對應用程序和的versionName增量的versionCode控制,我做了我自己的Java簡單的應用程序做

特點:

  • 的versionName應該是major.minor.point(由Android DOC)
  • 的versionName可以保存爲宜,復位到1.0.0,或增加(它的一個單個部分和後沿部分(一個或多個)
  • 的versionCode將由替換被/被設置爲0) Unix時間

可在這裏: android manifest build number