维护Android应用程序版本的最佳实践

时间:2011-06-14 04:25:56

标签: android release android-manifest release-management

通常,当您构建和调试Android应用程序时,清单中会有debuggable=true,您可以使用开发密钥对应用程序进行签名。

当需要发布您的应用程序时,您需要更改为debuggable=false,使用您自己的密钥签名,可选择运行ProGuard并可能执行其他操作。

使用Ant可以轻松编写某些外部操作,例如使用不同密钥进行签名。事实上,这些任务是开箱即用的。但是,AndroidManifest.xml中的更改似乎每次都需要手动干预。

另一个方面是维护应用程序的发布版本。例如,开箱即用的Android任务将不会使用任何版本信息。 Maven将使用SNAPSHOT版本,并且需要手动更新该版本。

处理所有这些问题非常繁琐,并且非常需要一些自动化。到目前为止,我的方法是在git中创建单独的分支以便发布,我将保留最终的清单,以及正确版本的poms。

但我希望其他人就处理Android发布周期的最佳做法提出一些建议。

任何建议?

1 个答案:

答案 0 :(得分:1)

  

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

在我们必须为自动Android构建进行手动xml操作的地方,我们使用<style />任务在Ant中使用内置的XSLT支持。样式表可能类似于:

<?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>

至于SNAPSHOT发布周期:自动Jenkins构建和发布过程的方式是maven目标,它将自动执行这些步骤:

  1. 更新pom版本(例如,android:versionName / android:versionCode)以删除“-SNAPSHOT” - 例如,x.y.y-SNAPSHOT变为x.y.y
  2. 将其作为“版本x.y.y发布”
  3. 提交
  4. 在git repo中发布的标签
  5. 将pom版本更新为下一个逻辑发行版的SNAPSHOT:x.y.z-SNAPSHOT
  6. 承诺将其作为“准备下一个版本”的起点
  7. 在第3步,它还将该代码推送到公共git服务器(如果适用),并将发布标记发布到Jenkins插件存储库,因此它可以作为更新提供。

    我认为Android版本周期的类似方法对于脚本来说也是相当简单的。