2011-06-14 48 views
4

通常,當您構建和調試Android應用程序時,您將擁有debuggable=true的清單,並且您將使用開發密鑰簽署應用程序。維護Android應用程序版本的最佳做法

當需要發佈應用程序時,您需要更改爲debuggable=false,使用自己的密鑰簽名,可以選擇運行ProGuard並可能執行其他操作。

某些外部操作(如使用不同密鑰簽名)可以使用Ant輕鬆編碼。事實上,這些任務是開箱即用的。但是,AndroidManifest.xml中的更改似乎每次都需要人工干預。

另一方面是維護應用程序的發佈版本。例如,開箱即用的Android任務不會使用任何版本信息。 Maven將使用SNAPSHOT版本,並需要手動更新該版本。

處理所有這些問題非常繁瑣,而且一些自動化是非常可取的。到目前爲止,我的方法是在git中創建單獨的分支,以便保留最終清單以及具有正確版本的poms。

但我想從其他人那裏得到一些關於處理Android發佈週期的最佳實踐的建議。

任何推薦?

回答

1

但是,AndroidManifest.xml中的更改似乎每次都需要手動干預。

在我們不得不爲我們的自動建立的Android手工做XML操作的地方,我們使用內置XSLT支持螞蟻,用<style />任務。樣式表可能看起來像:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

    <xsl:template match="application[@android:debuggable='true']"> 
    <xsl:copy> 
     <xsl:copy-of select="@*[name(.)!='android:debuggable']" /> 
     <xsl:apply-templates /> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

用作快照發布週期:

  1. :自動詹金斯建立和釋放的過程確實是一個行家的目標,它會自動執行這些步驟的方式更新POM版本(例如,android:versionName/android:versionCode)刪除 「-SNAPSHOT」 - 例如,x.y.y-SNAPSHOT變得簡單x.y.y
  2. 提交,作爲 「版本XYY發佈」
  3. 標籤,在混帳回購協議
  4. 更新POM版本快照下一個邏輯版本的發佈:x.y.z-SNAPSHOT
  5. 提交其作爲出發點

「的下一個版本做準備」。在步驟#3,它還會將該代碼推送到公共git服務器(如果適用),並將發佈標籤發佈到Jenkins插件存儲庫,以便它可用作更新。

我想像一個Android發佈週期的類似方法對腳本來說也是相當簡單的。

+0

尤其是,SNAPSHOT過程的思想是在第3步,而不是生成一個Jenkins「.hpi」插件文件,它會生成一個Android「.apk」發佈候選版本。這樣「真正的」發佈版本「x.y.z「只是在代碼中暴露在那一個#3構建步驟中(並且顯然依賴於構建成功) – Joe 2011-06-14 05:10:16

+0

謝謝!您的反饋是有價值的。我沒有使用詹金斯,但方法似乎適用於我的案例 – 2011-06-15 01:02:11

+0

對不起,我的意思是開發/構建/發佈Jenkins插件的maven過程使用上述工作流程,並且似乎是保持版本向前移動的一種不錯方式。並不意味着您必須使用* Jenkins來構建*上班 :) – Joe 2011-06-15 02:10:29

相關問題