Android应用程序发布的最佳维护实践

4
通常情况下,构建和调试Android应用程序时,您需要在清单中设置debuggable=true,并使用开发密钥签名应用程序。
当发布应用程序时,您需要将其更改为debuggable=false,使用自己的密钥进行签名,选择性地运行ProGuard,并可能执行其他操作。
像使用不同密钥进行签名这样的某些外部操作可以很容易地使用Ant编码。实际上,这些任务已经预置好了。然而,对AndroidManifest.xml的更改似乎需要手动干预每一次。
另一个方面是维护应用程序的发布版本。例如,原装的Android任务不会使用任何版本信息。Maven将使用SNAPSHOT版本,并需要手动更新以进行发布。
处理所有这些问题非常繁琐,因此高度希望有一些自动化工具。到目前为止,我的方法是为发布创建单独的git分支,其中我将保留最终的清单,以及具有正确版本的poms。
但我想听听其他人在处理Android发布周期方面的最佳实践建议。
有什么推荐吗?
1个回答

1
然而,每次更改AndroidManifest.xml似乎都需要手动干预。
在我们必须为自动化的Android构建进行手动xml操作的地方,我们使用Ant中内置的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>

关于SNAPSHOT发布周期:自动化Jenkins构建和发布过程的方式是使用一个Maven目标,它将自动执行以下步骤:
  1. 更新POM版本(例如,android:versionName/android:versionCode)以删除“-SNAPSHOT”--例如,x.y.y-SNAPSHOT变成简单的x.y.y
  2. 将其提交为“版本x.y.y发布”
  3. 在git repo中标记该发布
  4. 将POM版本更新为下一个逻辑版本的SNAPSHOT:x.y.z-SNAPSHOT
  5. 将其作为“准备下一个版本”的起点提交
在第3步,它还将该代码推送到公共git服务器(如果适用),并将发布标签发布到Jenkins插件存储库,以便作为更新可用。
我想,对于Android发布周期,类似的方法也应该很容易编写脚本。

特别是,SNAPSHOT 过程的想法是,在第 3 步中,它不会生成 Jenkins 的 ".hpi" 插件文件,而是生成 Android 的 ".apk" 发布候选构建。这样,“真正”的发布版本“x.y.z”只在该 #3 构建步骤的代码中暴露(并且显然依赖于构建成功)。 - Joe
谢谢。您的反馈非常宝贵。虽然我没有使用Jenkins,但这种方法在我的情况下似乎很合适。 - Alex Gitelman
抱歉,我指的是使用上述工作流程开发/构建/发布Jenkins插件的Maven过程,这似乎是保持版本向前推进的好方法。并不是说你必须使用Jenkins来构建才能实现这一点 :) - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接