我在安卓市场上发布了一款安卓应用程序。我只需键入ant release
即可准备发布的构建。我配置了一个密钥库,这样我就可以在一个步骤中构建最终的签名、模糊、可压缩的市场APK。我没有修改任何build.xml
文件,只是将它们指向我的密钥库。
现在,我也需要在亚马逊商店发布这个应用程序。这需要我生成一个未签名的内部版本。作为如上所述构建正常版本构建过程的一部分,在bin
目录中生成MyApp-release-unsigned.apk
文件。这看起来很有希望,只是该文件的时间戳早于同样生成的-unaligned.apk
变体。这表明-unsigned.apk
还没有被压缩,因此还没有准备好发布。
我需要对构建过程进行哪些修改,这样我就可以用一个命令生成一个(未签名、模糊、压缩对齐)亚马逊就绪的APK?
首先,看看我的build.xml中的echo语句,你是对的——未签名的包没有对齐。
假设您使用的是最新的SDK,那么我修改了build.xml以生成一个额外的文件(projectname release unsigned-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 -->
然后在发布目标中添加NEW 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,但更改看起来很简单
你不需要对包进行ziplign,因为根据这个问题,亚马逊会在他们签名后对包进行zip对齐。
根据安卓开发者网站上的这个页面,对未签名的包进行zip对齐是无用的,因为亚马逊将进行的签名操作将取消对包的对齐。