2012-01-16 35 views
3

我在Android电子市场上发布了Android应用程序。我通过简单地输入ant release来准备发布版本。我配置了一个密钥库,以便我可以在一个步骤中构建最终签名,模糊处理,zipaligned市场准备好的APK。我没有修改任何build.xml文件,只是将它们指向我的密钥库。使用Ant构建签名和未签名版本

现在,我需要在亚马逊商店上发布应用程序。这需要我生成一个未签名的构建。作为构建上述正常版本构建过程的一部分,将在bin目录中生成MyApp-release-unsigned.apk文件。这看起来很有希望,除了此文件的时间戳早于也产生的-unaligned.apk变体。这表明-unsigned.apk尚未进行zipaligned,因此尚未准备好发布。

我需要对构建过程进行哪些修改,以便我可以使用单个命令生成(未签名,模糊处理,zipaligned)Amazon已准备好的APK?

回答

3

您不需要zipalign软件包,因为根据this question,amazon会在软件包签名后对软件包进行zipalign。

而且根据this page on the Android developer site,未签名包的zip对齐是无用的,因为amazon将执行的签名操作将取消对齐包。

5

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

假设你使用的是最新的SDK,然后我修改的build.xml做出额外的文件(项目名称释放,无符号aligned.apk)是这样的:

覆盖的-set释放模式的目标,加入行中的注释之间

<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,但它看起来非常简单易行

+0

您建议的更改非常好,谢谢。使用你的答案作为灵感,我最终修改了发布目标(不是-set-release-mode目标),完全删除了签名步骤。 (我有一个单独的build.xml用于我的亚马逊构建和我的常规Android Market构建。) – 2012-01-24 14:12:48

+1

您可以发布整个build.xml文件吗?我有一个名为'common'的库项目,它被引用,我得到这个错误: 'BUILD FAILED /srv/android-sdk-linux_x86/tools/ant/build.xml:466:执行此操作时发生以下错误行: 目标“$ {build.target}”在项目“common”中不存在。 – 2012-06-09 15:49:05