Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android應用程序簽名

Android應用程序簽名

編輯:關於Android編程

 

Android系統要求所有的程序經過數字簽名才能安裝,如果沒有可用的數字簽名,系統將不許安裝運行此程序,不管是模擬器還是真實手機。因此,在設備或者是模擬器上運行調試程序之前,必須為應用程序設置數字簽名。Android系統僅僅會在安裝的時候測試簽名證書的有效期,如果應用程序的簽名在安裝之後過期,那麼應用程序仍然可以正常啟用。

Android通過數字簽名來標識應用程序的作者和在應用程序之間建立信任關系,不是用來決定用戶可不可以安裝該應用程序。android的這個簽名由應用程序的作者完成,並不需要權威的數字證書簽名機構認證,他只是用來讓應用程序包自我認證的。

默認debug密鑰簽名

當用Eclipse打包測試時,ADT會自動使用debug密鑰為應用程序簽名,debug密鑰是一個名為debug.keystore的文件,位於電腦的:

/userName/.Android/debug.keystore,其中的userName是電腦的用戶名。

工程的bin目錄下的apk包就是使用debug密鑰做簽名的包,所以理論上是不能用這個包做上線發布的。

生成密鑰簽名

整個過程涉及到幾個工具:

  • keytool 生成、修改操作數字證書,jdk的工具
  • jarsigner 使用數字證書給apk文件簽名,jdk的工具
  • zipalign 對簽名後的apk進行優化,提高與Android系統交互的效率,Android sdk中的工具

    最簡單的方法是直接使用Eclipse的功能完成這一系列操作:

    右擊工程->Android Tools->Export signed Application package,選擇使用現有的keystore簽名、創建新的keystore簽名。有幾個關鍵信息需要記住:

    • storepass:keystore的密碼(一個keystore下面可以存在多個key,這是keystore的一級密碼)
    • alias:每個key對應一個alias名字
    • keypass:單個key的主密碼

      輸入正確的keystore信息就可以輸出一個打包過的apk包了。

      誤使用debug.keystore發布的應用怎麼辦?

      沒錯。。。說的就是我自己。

      產生的問題

      第一次發布時,直接從bin目錄拷出apk包,並把這個包發布。這樣就是使用debug.keystore簽名、並上線了應用,我想發生這種情況都是因為不太了解Android應用程序簽名相關的細節。

      當發現了以後,希望使用一個自己生成的“正規的”keystore再更新應用。因為更換了keystore,那麼安裝包的簽名就變了。用戶更新應用時,會在安裝過程中報錯。安裝過程中系統檢測到程序的簽名不一致,認為安裝包有風險(可能被篡改),安裝失敗,需要卸載原應用重新安裝。這樣的問題很嚴重!!!

      解決辦法

      一個字,改!!!

      找到debug.keystore文件,事實上你只要保存這個.keystore,今後都使用默認key做應用程序簽名並更新也是可以的,一點問題沒有。只是默認密碼會有點不安全。

      debug.keystore默認信息為:

      alias : androiddebugkey

      storepass&keypass : andriod

      只需要使用keytool,把debug.keystore的alias、storepass、keypass修改為我們想要的值即可。

      修改alias:

      keytool -changealias -alias your-very-very-long-alias -destalias new-alias -keypass keypass -keystore /path/to/keystore -storepass storepass
      

      修改storepass:

      keytool -storepasswd -keystore /path/to/keystore
      Enter keystore password:  changeit
      New keystore password:  new-password
      Re-enter new keystore password:  new-password
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved