问题描述
|
通常,当您构建和调试Android应用程序时,清单中将带有“ 0”,并且将使用开发密钥对应用程序进行签名。
是时候发布应用程序了,您需要更改为
debuggable=false
,使用您自己的密钥签名,可以选择运行ProGuard并可能需要执行其他操作。
某些外部操作(例如使用不同的密钥签名)可以轻松地用Ant编码。实际上,这些任务是开箱即用的。但是,AndroidManifest.xml
的变化似乎每次都需要人工干预。
另一个方面是维护应用程序的发行版本。例如,开箱即用的Android任务将不使用任何版本信息。 Maven将使用SNAPSHOT版本,并将需要手动更新此版本。
处理所有这些问题非常繁琐,并且非常需要自动化。到目前为止,我的方法是在git中创建单独的分支进行发布,以保留最终清单以及带有正确版本的poms。
但是,我想从其他人那里获得一些有关处理Android发布周期的最佳做法的建议。
有什么建议吗?
解决方法
但是,AndroidManifest.xml中的更改似乎每次都需要人工干预。
在必须对自动化的Android构建进行手动xml操作的地方,我们使用任务使用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目标来自动执行以下步骤:
更新pom版本(例如android:versionName
/android:versionCode
)以删除\“-SNAPSHOT \” –例如x.y.y-SNAPSHOT
变成简单的x.y.y
将其提交为“版本x.y.y版本”
在git repo中发布的标签
将pom版本更新为下一个逻辑发行版的SNAPSHOT:x.y.z-SNAPSHOT
将此作为“准备下一个版本”的起点
在步骤#3中,它还将该代码推送到公共git服务器(如果适用),并将release标签发布到Jenkins插件存储库,因此它可以作为更新使用。
我可以想象,对于Android发布周期而言,类似的方法对于脚本来说也是相当琐碎的。