上傳Google市場時,提示安裝包未進行 zipalign,禁止傳包問題的解決方法

如題的問題:

  • Google官網介紹:
    我們強烈推薦在新的和已經發布的程序上使用zipalign工具來得到優化後的版本——即使你的程序是在老版本的Android平臺下開發的。在你的應用程序上運行zipalign,使得在運行時Android與應用程序間的交互更加有效率。因此,這種方式能夠讓應用程序和整個系統運行得更快。Android SDK中包含一個“zipalign”的工具,它能夠對打包的應用程序進行優化。
    在Android中,每個應用程序中儲存的數據文件都會被多個進程訪問:比如在,安裝程序會讀取應用程序的manifest文件來處理與之相關的權限問題;Home應用程序會讀取資源文件來獲取應用程序的名和圖標;系統服務會因爲很多種原因讀取資源(例如,顯示應用程序的Notification);應用程序自身用到資源文件。
  • 在Android中,當資源文件通過內存映射對齊到4字節邊界時,訪問資源文件的代碼纔是有效率的。如果資源本身沒有進行對齊處理(未使用zipalign工具),它就必須回到老路上,顯式地讀取它們——這個過程將會比較緩慢且會花費額外的內存。

下面介紹對其的步驟:

  1. 自動對齊:
    使用ADT:
    如果你使用導出嚮導的話,Eclipse中的ADT插件(從Ver. 0.9.3開始)就能自動對齊Release程序包。使用嚮導,右擊工程屬性,選擇“Android Tools” > “Export Signed Application Package…”。當然,你還可以通過AndroidManifest.xml編輯器的第一頁做到。
    使用Ant:
    Ant編譯腳本(從Android 1.6開始)可以對齊程序包。老平臺的版本不能通過Ant編譯腳本進行對齊,必須手動對齊。

    從Android 1.6開始,Debug模式下編譯時,Ant自動對齊和簽名程序包。

    Release模式下,如果有足夠的信息簽名程序包的話,Ant纔會執行對齊操作,因爲對齊處理髮生在簽名之後。爲了能夠簽名程序包,進而執行對齊操作,Ant必須知道keystore的位置以及build.properties中key的名字。相應的屬性名爲key.store和key.alias。如果這些屬性爲空,簽名工具會在編譯過程中提示輸入store/key的密碼,然後腳本會執行簽名及apk文件的對齊。如果這些屬性都沒有,Release程序包不會進行簽名,自然也就不會進行對齊了。

  2. 手動:
    爲了能夠手動對齊程序包,Android 1.6及以後的SDK的 build-tools\26.0.2 都有zipalign工具。你可以使用它來對齊任何版本下的程序包。
    對齊命令如下:zipalign -v 4 原包.apk 對齊之後app名.apk
    驗證對齊命令: zipalign -c -v 4 (對齊之後app).apk
    記錄完畢。

注意:

如果在簽名之後再進行手動對其,會安裝失敗,so請在對齊之後再進行簽名操作。至於簽名步驟嘛,請轉至 對Android apk 簽名 --apksigner

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章