Android應用程序簽名(官方文檔中文版)(下)

公開發布版的簽名.

當應用準備好對外發布, 必須: shell

  1. 獲取一個合適的私鑰.
  2. 在release模式下編譯應用程序.
  3. 使用你的私鑰對應用程序進行簽名.
  4. 使用zipalign來調整和優化APK包

若是使用Eclipse+ADT插件進行開發, 可使用Export Wizard來處理整個的編譯, 簽名, 和優化過程. 在處理過程當中, Export Wizard甚至容許生成一個新的keystore和私鑰. 安全

 

1. 獲取一個合適的私鑰

在給應用程序簽名的準備階段, 必須首先確保有一個用於簽名的合適的私鑰. 合適的私鑰有以下要求: 工具

  • 是你所擁有的.
  • 表明我的, 公司, 或者組織實體, 在應用裏能夠被識別的.
  • 擁有比應用程序或者應用程序套件生命週期更長的有效期. 推薦大於25年的有效期. 若是計劃在Android Market上發佈應用, 注意須要有效期截止時間爲 2033-10-22 之後.
  • 不能上傳一個有效期在此以前的應用.
  • 不是由Android SDK工具生成的debug key

密鑰能夠是自簽名的. 若是沒有一個合適的密鑰, 必須使用Keytool生成一個. 優化

 

2. 在release模式編譯應用程序.

爲了向用戶發佈應用程序, 必須在release模式編譯. 在release模式下, 編譯好的應用程序默認是沒簽名的, 須要用私鑰爲它簽名. spa

警告: 不能發佈一個沒有簽名或者用debug key簽名的應用程序. 插件

使用Eclipse

要從Eclipse導出一個未簽名的 .apk, 在Package Explorer中的project上點擊鼠標右鍵, 選擇Android Tools > Export Unsigned Application Package. 而後給未簽名的.apk指定一個文件路徑. (或者在Eclipse中打開AndroidManifest.xml文件, 點開Overview標籤, 而後點擊Export an unsigned .apk.) 命令行

注意, 徹底能夠在Export Wizard中執行整個的編譯和簽名步驟. 參見: 使用Eclipse ADT編譯和簽名. debug

 

使用Ant

 

若是使用Ant, 能夠經過ant命令行的release選項開啓release模式. xml

 

使用Eclipse ADT編譯和簽名

若是使用Eclipse和ADT插件, 能夠用Export Wizard來導出一個簽名的.apk(若是必要,甚至能夠建立一個新的keystore.) Export Wizard爲你處理全部Keytool和Jarsigner的交互操做, 這容許使用一個GUI界面來操做簽名包的過程, 而沒必要人工處理各類編譯, 簽名, 以及優化對齊工做. 一旦嚮導編譯並簽名完.apk包, 它將也使用zipalign對包進行優化對齊處理. 由於Export Wizard使用到Keytool和Jarsigner, 應當確保在電腦上能夠訪問到這2樣工具. 生命週期

若要在Eclipse中建立一個簽名並優化對齊後的.apk:

  1. 在Package Explorer中選中project, 而後選擇File > Export.
  2. 打開Android文件夾, 選擇Export Android Application, 而後點擊 Next.
  3. Export Android Application 嚮導開始, 它將引導你進行簽名的整個過程, 包括選擇用於簽名.apk的私鑰(或者建立一個新的keystore和私鑰)
  4. 完成Export Wizard後, 應用程序將被編譯, 簽名, 對齊, 作好了發佈前的全部準備.

保證私鑰安全.

對於你和你的用戶來講, 維護你的私鑰的安全至關關鍵和重要. 若是你容許別人使用你的key, 或者若是你將keystore和密碼放在一個不安全的地方, 以致於第三方能夠找到並使用它們, 那麼你的做者身份和用戶信任度將受到連累.

若是第三方在你不知情或沒獲得你的容許的狀況下控制和使用你的key, 那麼隨便一我的就均可以簽名和發佈惡意的應用程序來替換你發佈的應用, 或者乾脆取代你的應用. 而後這我的能夠用你的身份簽名和發佈應用程序, 攻擊其餘應用甚至直接攻擊系統, 以及損壞或偷取用戶數據.

開發者(或團體)的名聲取決於你對你的私鑰的適當保密, 任什麼時候候, 直到key過時. 下面是一些保證key的安全性的小提示.

  • 對keystore和key採用強密碼.
  • 當用Keytool生成key時, 不要在命令行提供-storepass 和 -keypass 選項參數. 若是非這麼作, 你的密碼將可以在shell歷史中查到, 這樣將致使任何用戶都能訪問.
  • 相似地, 當使用Jarsigner簽名應用時, 不要在命令行提供-storepass 和 -keypass參數選項.
  • 不要給任何人你的私鑰, 不要讓未經受權的人知道你的keystore和key密碼.

一般狀況下, 當生成,使用和保存你的key時, 若是根據常識作了提早的預防, 那麼它將會保證安全.

相關文章
相關標籤/搜索