使用Ant构建已签名和未签名的版本

时间:2012-01-16 22:38:06

标签: android ant amazon

我在Android电子市场上发布了一款Android应用。我只需输入ant release即可准备发布版本。我有一个密钥库配置,以便我可以在一个步骤中构建最终签名,混淆,zipaligned市场准备APK。我没有修改任何build.xml文件,只是将它们指向我的密钥库。

现在,我需要在亚马逊商店发布应用程序。这需要我生成一个未签名的构建。作为构建如上所述的正常发布版本的过程的一部分,在MyApp-release-unsigned.apk目录中生成bin文件。除了此文件的时间戳早于同时生成的-unaligned.apk变体之外,这看起来很有希望。这表明-unsigned.apk尚未经过拉链标记,因此无法发布。

我需要对构建过程进行哪些修改才能使用单个命令生成(unsigned,模糊,zipaligned)亚马逊就绪APK?

2 个答案:

答案 0 :(得分:5)

首先,查看build.xml中的echo语句,你是对的 - 未签名的包没有对齐。

假设您使用的是最新的SDK,那么我修改了build.xml以创建一个额外的文件(projectname-release-unsigned-aligned.apk),如下所示:

通过在注释

之间添加一行来覆盖-set-release-mode目标
<target name="-set-release-mode" depends="-set-mode-check">
<property name="out.packaged.file" location="${out.absolute.dir}/${ant.project.name}-release-unsigned.apk" />
<!-- NEW PROPERTY FOR UNSIGNED ALIGNED FILE -->
<property name="out.unsignedaligned.file" location="${out.absolute.dir}/${ant.project.name}-release-unsigned-aligned.apk" />
<!-- NEW PROPERTY FOR UNSIGNED ALIGNED FILE END -->

然后将新的zip注释

之间的行添加到发布目标中
<!-- Zip aligns the APK -->
<zipalign-helper in.package="${out.unaligned.file}"out.package="${out.final.file}" />
<!-- NEW Zip aligns the unsigned APK -->
<zipalign-helper in.package="${out.packaged.file}" out.package="${out.unsignedaligned.file}" />
<!-- NEW Zip aligns the unsigned APK  END --> 

这应该为您提供额外的未签名和对齐文件。我没有测试生成的APK,但它看起来很容易改变

答案 1 :(得分:3)

您不需要对包装进行拉链,因为根据this question,亚马逊会在签名后对包装进行拉链。

根据this page on the Android developer site,无符号包的拉链对齐是没用的,因为亚马逊将要做的签名操作将取消对齐包。