2013-07-01 24 views
0

我試圖與Jenkins建立Android持續集成環境,並且我希望我的versionCode和versionNumber在Jenkins構建機器運行時每次增加1 。該應用程序是使用Apache Ant構建的,我試圖避免包含外部庫。我一直在尋找這個問題的解決方案,現在已經好幾周了,看起來似乎沒有任何工作。在AndroidManifest.xml中查找當前的versionCode並將其增加一個

如果可能的話,我需要幫助:

尋找一種方法來跟蹤當前的versionCode和中的versionName和一個遞增。我發現的一個可能的解決方案是在build.properties文件中創建條目,以跟蹤內部版本號。使用build.xml中的'operation =「+」'可以很容易地實現這一點,但實際上將值(例如154)而不是地址(例如$ {build.number})拿到Manifest中是不可能的!

將實際整數或字符串值獲取到versionCode和versionNumber中,而不是地址屬性值。我似乎無法使用replaceregexp或任何其他ant替換任務獲取versionCode和versionName的實際值。例如:

<replaceregexp file="/Users/holt.bowmer/Documents/SVNRepo/mobile-trunk/android/AndroidManifest.xml" 
     match="versionCode=(.*)" 
     replace= 'versionCode= "${build.number}"' /> 

將從改變的versionCode =的versionCode 「154」 來的versionCode =「$ {} build.number,這是不允許的一切的一切

,這是非常令人沮喪,我!我一直在瘋狂地試圖找到解決這個問題的辦法,其他所有的stackoverflow或谷歌的解決方案都沒有工作,所以任何幫助都將不勝感激。這是我第一次發佈到stackoverflow,所以如果事情發生錯誤,請原諒我或發佈不正確。

Thanks!

編輯

好吧,我想通了,我會更新我的迴應,以處理這個可怕的問題。爲什麼詹金斯Android模擬器無法做到這我永遠不會明白,但這裏是我的解決方案:

步驟1:下載Jenkins上的「Hudson Next Build Number」插件。訣竅在於Jenkins的內部版本號會自動增加,然後通過調用$ {BUILD_NUMBER}來使用它。哈德森插件只是讓你設置任何你想要的內部編號。

步驟2:在配置菜單的Build部分下,您可以調用Android Emulator插件和(可能)調用ant,然後添加構建步驟。你想添加「Execute shell」並將它放置在Build列表的頂部,在Emulator和Ant之前。

步驟3:在這個shell文件,你希望把下面的代碼: 「1.3 *」。

sed -i "" "s/android:versionCode=.*/android:versionCode= \"${BUILD_NUMBER}\"/" Users/your.name/Documents/workspace/android/AndroidManifest.xml 

sed -i "" "s/"1.3.*"/1.3.${BUILD_NUMBER}\"/" /Users/your.name/Documents/workspace/android/AndroidManifest.xml 

對於您可能要改變第二shell腳本和「1.3 $ {BUILD_NUMBER}以匹配清單中的主要版本號和次要版本號。此外,sed調用之後的文件路徑應該指向您要更改的AndroidManifest.xml。

第4步:轉到「設置下一個構建版本編號「選項卡,在您的選項菜單上方,您的編譯歷史記錄上方,然後將內部編號設置爲您想要的內容。

步驟5:讓Android模擬器插件和您的ant版本在shell腳本運行後執行它們的操作。

這爲我解決了這個問題,所以希望我能幫助別人處於類似困境的人。

+0

當你所要做的只是在兩個不同的字段上鍵入兩個數字,這似乎是一個很大的工作要做。 – yams

+0

同意,但目標是讓Jenkins在每次將代碼簽入SVN存儲庫時構建和更新項目。因此,手動更改這些數字並不是真正的選項 –

+0

爲什麼不通過java獲取清單中的值。 – yams

回答

0

我自己的Java簡單的工具來做到這一點是在這裏availalbe: android manifest build number

特點:

  • 的versionName應該是major.minor.point(如建議由Android DOC)
  • versionName可以保留,重置爲1.0.0或遞增(其單個部分和尾部部分被設置爲0)
  • versionCode將被替換爲Unix時間
相關問題