通常,当您构建和调试Android应用程序时,清单中会有debuggable=true
,您可以使用开发密钥对应用程序进行签名。
当需要发布您的应用程序时,您需要更改为debuggable=false
,使用您自己的密钥签名,可选择运行ProGuard并可能执行其他操作。
使用Ant可以轻松编写某些外部操作,例如使用不同密钥进行签名。事实上,这些任务是开箱即用的。但是,AndroidManifest.xml
中的更改似乎每次都需要手动干预。
另一个方面是维护应用程序的发布版本。例如,开箱即用的Android任务将不会使用任何版本信息。 Maven将使用SNAPSHOT版本,并且需要手动更新该版本。
处理所有这些问题非常繁琐,并且非常需要一些自动化。到目前为止,我的方法是在git中创建单独的分支以便发布,我将保留最终的清单,以及正确版本的poms。
但我希望其他人就处理Android发布周期的最佳做法提出一些建议。
任何建议?
答案 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目标,它将自动执行这些步骤:
android:versionName
/ android:versionCode
)以删除“-SNAPSHOT” - 例如,x.y.y-SNAPSHOT
变为x.y.y
x.y.z-SNAPSHOT
在第3步,它还将该代码推送到公共git服务器(如果适用),并将发布标记发布到Jenkins插件存储库,因此它可以作为更新提供。
我认为Android版本周期的类似方法对于脚本来说也是相当简单的。