文章出處

1. 什么是數字簽名?
數字簽名就是為你的程序打上一種標記,來作為你自己的標識,當別人看到簽名的時候會知道它是與你相關的
 
 
2. 為什么要數字簽名?
最簡單直接的回答: 系統要求的。
 Android系統要求每一個Android應用程序必須要經過數字簽名才能夠安裝到系統中,也就是說如果一個Android應用程序沒有經過數字簽名,是沒有辦法安裝到系統中的!
Android通過數字簽名來標識應用程序的作者和在應用程序之間建立信任關系,不是用來決定最終用戶可以安裝哪些應用程序。
這個數字簽名由應用程序的作者完成,并不需要權威的數字證書簽名機構認證,它只是用來讓應用程序包自我認證的。 

3.數字證書的機制?
Android使用Java的數字證書相關的機制來給apk加蓋數字證書,要理解android的數字證書,需要先了解以下數字證書的概念和java的數字證書機制。


4.程序使用相同的數字證書的好處
(1)有利于程序升級
當新版程序和舊版程序的數字證書相同時,Android系統才會認為這兩個程序是同一個程序的不同版本。如果新版程序和舊版程序的數字證書不相同,則Android系統認為他們是不同的程序,并產生沖突,會要求新程序更改包名。
 
(2)有利于程序的模塊化設計和開發。
Android系統允許擁有同一個數字簽名的程序運行在一個進程中,Android程序會將他們視為同一個程序。所以開發者可以將自己的程序分模塊開發,而用戶只需要在需要的時候下載適當的模塊。

(3)可以通過權限(permission)的方式在多個程序間共享數據和代碼。
Android提供了基于數字證書的權限賦予機制,應用程序可以和其他的程序共享概功能或者數據給那那些與自己擁有相同數字證書的程序。如果某個權限(permission)的protectionLevel是signature,則這個權限就只能授予那些跟該權限所在的包擁有同一個數字證書的程序。

5. 在簽名時,需要考慮數字證書的有效期

(1)數字證書的有效期要包含程序的預計生命周期,一旦數字證書失效,持有改數字證書的程序將不能正常升級。

(2)如果多個程序使用同一個數字證書,則該數字證書的有效期要包含所有程序的預計生命周期。

(3)Android Market強制要求所有應用程序數字證書的有效期要持續到2033年10月22日以后。

6. 數字證書的要點:

Android數字證書包含以下幾個要點:

             (1)所有的應用程序都必須有數字證書,Android系統不會安裝一個沒有數字證書的應用程序

             (2)Android程序包使用的數字證書可以是自簽名的,不需要一個權威的數字證書機構簽名認證

             (3)如果要正式發布一個Android,必須使用一個合適的私鑰生成的數字證書來給程序簽名,而不能使用adt插件或者ant工具生成的調試證書來發布。

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

             (5)Android使用標準的java工具 Keytool andJarsigner 來生成數字證書,并給應用程序包簽名。

            6)使用zipalign優化程序。


數字簽名的兩種模式

我們都知道Android系統不會安裝運行任何一款未經數字簽名的apk程序,無論是在模擬器上還是在實際的物理設備上。所以我們會有一個疑問,為何在日常開發過程中我沒有進行任何簽名的操作,程序都會在模擬器和真機上運行?下面我們來講講

APK程序的兩種模式: 調試模式(debugmode)和發布模式(release mode)


1. 調試模式(debug mode) : 在調試模式下,ADT會自動的使用debug密鑰為應用程序簽名,因此我們可以直接運行程序。

debug密鑰:  一個名為debug.keystore的文件

存放位置:    C:\Users\Xiaopeng\.android\debug.keystore      Xiaopeng對應替換為自己操作系統的用戶名

兩個風險:
     debug簽名的應用程序有這樣兩個風險:

     1)debug簽名的應用程序不能在Android Market上架銷售,它會強制你使用自己的簽名;

     2)debug.keystore在不同的機器上所生成的可能都不一樣,就意味著如果你換了機器進行apk版本升級,那么將會出現上面那種程序不能覆蓋安裝的問題。
          不要小視這個問題,如果你開發的程序只有你自己使用,當然無所謂,卸載再安裝就可以了。但要是你的軟件有很多使用客戶,這就是大問題了,就相當于軟件不具備升級功能! 

所以一定要有自己的數字證書來簽名;

2. 發布模式(release mode): 當要發布程序時,開發者就需要使用自己的數字證書給apk包簽名

使用自己的數字證書給APK簽名的兩種方法:

(1)通過DOS命令來對APK簽名。

(2)使用ADT Export Wizard進行簽名
轉載請注明來源: 畢小朋 — http://blog.csdn.net/wirelessqa

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()