2012-01-16 67 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