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

标签 android release android-manifest release-management

通常,当您构建和调试 Android 应用程序时,您会在 list 中设置 debuggable=true,并且您会使用开发 key 签署应用程序。

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

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

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

处理所有这些问题非常乏味,因此非常需要一些自动化。到目前为止,我的方法是在 git 中创建单独的分支用于发布,我将在其中保留最终 list 以及具有正确版本的 poms。

但我想从其他人那里得到一些关于处理 Android 发布周期的最佳实践的建议。

有什么建议吗?

最佳答案

However, changes in AndroidManifest.xml seem to require manual intervention every time.

在我们必须为自动化 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 仓库中标记该版本
  4. 将 pom 版本更新为下一个逻辑版本的 SNAPSHOT:x.y.z-SNAPSHOT
  5. 将其作为“为下一个版本做准备”的起点

在第 3 步,它还将该代码推送到公共(public) git 服务器(如果适用),并将发布标签发布到 Jenkins 插件存储库,因此它可以作为更新使用。

我想对于 Android 发布周期的类似方法对于脚本来说也是相当微不足道的。

关于android - 维护 Android 应用程序发布的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6339040/

相关文章:

android - 使用聚合调用 Google Fit REST API

android - 如何在android中通过代码隐藏标题栏

android - 调试在服务类中不起作用 ??什么会导致这个问题?

java - 如何为字符串构建正则表达式?

android - 如何.release() RingtoneManager实例化的MediaPlayer?

.net - VS 2015移动文件后无法运行发布

android - 在 Android 中发布和调试应用程序版本。两个证书

android - 即使在 list 中添加 WRITE_SECURE_SETTINGS 权限错误

android - 透明覆盖在 Canvas 上绘制后失去透明度

git - 我如何在 Bitbucket 上制作/关注发布公告?