Android打包簽名那點事

Kaitiren發表於2015-11-11

       接觸android開發也有一段時間了,對打包簽名有所瞭解,但都是皮毛,一點不深入。今天結合網路上的資料和自己的實踐,盤點下相關內容,打消自己的一些疑問,順便做一下總結。

一:打包簽名的好處

1)沒有簽名的應用不允許安裝到模擬器或者真機上。

2)沒有簽名的或僅僅debug簽名的應用不能在Android Market上架銷售。

3)簽名是開發者的身份標識,可以防止交易抵賴的發生。

4)防止開發商或個人混淆替換已經安裝的程式,以保證簽名不同的包不被替換。

5)保證應用的無縫持續升級,簽名不同的應用不能覆蓋升級。

6)利於應用的模組化開發部署和程式間資料共享。

二:打包的模式種類及區別

有兩種打包簽名的模式:debug  和  release 。

1)通過Eclipse上的“執行”按鈕直接在手機或者模擬器上啟動程式,採用的是系統自動生成的debug簽名。通過選單 Window -> Preferences -> Android -> Build 可以看到簽名檔案所在的位置,如下圖。雖然可以更改,但個人覺得沒有任何意義,只是除錯程式而已。

注意:如果簽名過期則導致你無法生成apk檔案,此時你只要刪除debug keystore即可,系統又會為你生成有效期為一年的新簽名

2)右擊專案->android tools->Export signed Application package 是release簽名模式,會用我們自己生成的key檔案來簽名。

3)Debug模式簽名的應用程式不能在Android Market上架銷售,它會強制你使用自己的簽名。

4)Debug模式下簽名用的證照,自從它建立之日起,1年後就會失效

5)Debug模式的簽名檔案在不同的機器上所生成的可能不一樣,如你換機器進行apk版本升級的話,可能會出現程式不能覆蓋安裝的問題!

三:簽名其他需要了解的內容

1)Android程式包使用的數字證照可以是自簽名的,不需要一個權威的數字證照機構簽名認證。

2)數字證照都是有效期的,Android只是在應用程式安裝的時候才會檢查證照的有效期。如果程式已經安裝在系統中,即使證照過期也不會影響程式的正常功能。

四:release模式簽名的方式

release模式簽名的方式有多種,最常用的主要兩種:Eclipse+ADT方式 和 命令列方式。

1)Eclipse+ADT方式

     這個是最簡單且常用的方式,步驟如下:

      A: Project -> 取消Build Automatically

      B: Project -> Clean

      C: Project -> Build  

      D: 右擊專案->android tools->Export signed Application package

     第一次執行可以使用 Create new keystore,以後簽名就可以使用 User existing keystore。按照說明一步步操作即可,很容易就能打包簽名成功。

   注意:請妥善保管生成的簽名檔案,不要丟失,以保證應用釋出可重複使用,以免不能進行應用的無縫持續升級。

2)命令列模式

     個人覺得這個不常用,如果你想了解打包和簽名細節的話,也或者你得到了一個未簽名的APK檔案想要釋出的話,可以採用這個方式。

     可通過右擊專案->android tools->Export Unsigned Application package,得到一個未簽名的程式,然後使用標準的java工具keytool 和 jarsigner 來生成證照和給程式簽名。

     網路上關於 keytool 和 jarsigner 命令的教程很多,搜尋一下即可瞭解如何使用。

相關文章