所有的Android應用程序都要求開發人員用一個證書進行數字簽名,anroid系統不會安裝沒有進行簽名的由于程序。
平時我們的程序可以在模擬器上安裝并運行,是因為在應用程序開發期間,由于是以Debug面試進行編譯的,因此ADT根據會自動用默認的密鑰和證書來進行簽名,而在以發布模式編譯時,apk文件就不會得到自動簽名,這樣就需要進行手工簽名。
給apk簽名可以帶來以下好處:
1. 應用程序升級:如果你希望用戶無縫升級到新的版本,那么你必須用同一個證書進行簽名。這是由于只有以同一個證書簽名,系統才會允許安裝升級的應用程序。如果你采用了不同的證書,那么系統會要求你的應用程序采用不同的包名稱,在這種情況下相當于安裝了一個全新的應用程序。如果想升級應用程序,簽名證書要相同,包名稱要相同!
2.應用程序模塊化:Android系統可以允許同一個證書簽名的多個應用程序在一個進程里運行,系統實際把他們作為一個單個的應用程序,此時就可以把我們的應用程序以模塊的方式進行部署,而用戶可以獨立的升級其中的一個模塊
3.代碼或者數據共享:Android提供了基于簽名的權限機制,那么一個應用程序就可以為另一個以相同證書簽名的應用程序公開自己的功能。以同一個證書對多個應用程序進行簽名,利用基于簽名的權限檢查,你就可以在應用程序間以安全的方式共享代碼和數據了。
不同的應用程序之間,想共享數據,或者共享代碼,那么要讓他們運行在同一個進程中,而且要讓他們用相同的證書簽名。