Android apk 簽名

一. android 簽名的特性

android 要求所有的app都要有一個數字簽名證書,這個證書一般都是開發者自己生成的,並且開發者擁有證書的祕鑰。簽名一般有兩種模式:debug和release模式,在開發過程中一般使用debug模式,這樣調試期間不用每次都要輸入祕鑰等操作,但是在發佈app時應該使用release模式。Android SDK工具在調試模式下會自動生成數字證書,當你發佈你的app時,你需要生成自己的數字證書並簽名。

二、調試模式下的簽名

        在調試模式下android sdk工具會對apk進行簽名,這一般是由IDE自動完成的,eclipse和android studio等都支持對apk進行自動簽名,這個調試模式的簽名存儲在 $HOME/.android/debug.keystore在windows下一般是C:\Users\<user name>\.android\debug.keystore

查看這個keystore的信息,在命令行下輸入:

$ keytool -list -keystore debug.keystore 

提示輸入密碼,默認是android


三、發佈模式下的簽名

發佈模式下可以使用IDE的圖形界面進行簽名,在eclipse中在項目上右鍵右擊,點擊Android tools ->點擊Export Signed Application Package,可以進行簽名,這個過程不再贅述,可以參考其他博客http://www.android100.org/html/201307/18/3655.html。同樣在android studio中也可以在界面上進行簽名過程。同樣的也可以使用命令行對apk進行簽名。見http://blog.csdn.net/linghu_java/article/details/6701666

四、查看apk的簽名

使用winRaR打開apk文件,找到其中的META-INF文件夾中的CERT.RSA。在命令行輸入keytool -printcert -file CERT.RSA。可以得到這個apk的簽名信息。


五、簽名的意義

(1)有利於程序升級,當新版程序和舊版程序的數字證書相同時,Android系統纔會認爲這兩個程序是同一個程序的不同版本。如果新版程序和舊版程序的數字證書不相同,則Android系統認爲他們是不同的程序,併產生衝突,會要求新程序更改包名。

(2)有利於程序的模塊化設計和開發。Android系統允許擁有同一個數字簽名的程序運行在一個進程中,Android程序會將他們視爲同一個程序。所以開發者可以將自己的程序分模塊開發,而用戶只需要在需要的時候下載適當的模塊。

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

六、apk簽名的一般問題

在手機中安裝具有相同簽名(mykey)的apk時,提示是否覆蓋,確認直接覆蓋前一程序
在手機中安裝具有相同工程名(projectname),但是簽名(mykey)不同的apk時,無法安裝,這就避免了其他應用出現相同的包名的時候把程序替換掉



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章