一、 Android簽名有什么作用?
- 應用程序升級:如果你希望用戶無縫升級到新的版本,那么你必須用同一個證書進行簽名。這是由於只有以同一個證書簽名,系統才會允許安裝升級的應用程序。如果你采用了不同的證書,那么系統會要求你的應用程序采用不同的包名稱,在這種情況下相當於安裝了一個全新的應用程序。如果想升級應用程序,簽名證書要相同,包名稱要相同!
- 應用程序模塊化:Android系統可以允許同一個證書簽名的多個應用程序在一個進程里運行,系統實際把他們作為一個單個的應用程序,此時就可以把我們的應用程序以模塊的方式進行部署,而用戶可以獨立的升級其中的一個模塊。
- 代碼或者數據共享:Android提供了基於簽名的權限機制,那么一個應用程序就可以為另一個以相同證書簽名的應用程序公開自己的功能。以同一個證書對多個應用程序進行簽名,利用基於簽名的權限檢查,你就可以在應用程序間以安全的方式共享代碼和數據了。
二、 簽名的注意事項
- 所有的Android應用都必須有數字簽名,沒有不存在數字簽名的應用,包括模擬器上運行的。Android系統不會安裝沒有數字證書的應用。
- 簽名的數字證書不需要權威機構來認證,是開發者自己產生的數字證書,即所謂的自簽名。
- 模擬器開發環境,開發時通過ADB接口上傳的程序會先自動被簽有Debug權限,然后才傳遞到模擬器。
- 正式發布一個Android應用時,必須使用一個合適的私鑰生成的數字證書來給程序簽名,不能使用ADT插件或者ANT工具生成的調試證書來發布。
- 數字證書都是有有效期的,Android只是在應用程序安裝的時候才會檢查證書的有效期。如果程序已經安裝在系統中,即使證書過期也不會影響程序的正常功能。
- Android將數字證書用來標識應用程序的作者和在應用程序之間建立信任關系,而不是用來決定最終用戶可以安裝哪些應用程序。
三、 生成簽名
1.開始菜單,搜索cmd
2.打開cmd
3.進入.android
4.使用命令keytool -list -v -keystore debug.keystore
5.需要安裝keytool,辦法是安裝jdk,百度搜索jdk並下載安裝;具體平台按實際情況選擇
6.安裝完畢,進入到jdk安裝bin目錄,並復制地址
7.回到cmd命令窗口,輸入cd + 空格,並在標題欄右側點擊粘貼
8.回車,進入到這個目錄
9.再次輸入keytool -list -v -keystore debug.keystore命令並回車,出現錯誤
10.先執行以下命令keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000
11.按提示輸入密碼(自己定),密保答案等;到后來需要重新再輸入密碼,生成完成
12.到keytool目錄下,看到debug.keystore已經生成成功
四、 GeneXus開發Android應用時如何簽名
在開發過程中,GeneXus已經自帶了debug.keystore的簽名文件,以讓開發人員可以迅速進行開發。
但如果開發完成了,在投入生產環境時,建議最好使用自己管理的簽名文件。
在如上圖所示,在對應的屬性,指定到自己已經生成的keystore文件(可以參考本文章的前面內容),配置好對應的名稱/存儲密碼/密鑰口令等信息,
重新編譯即可,這樣GeneXus在生成新的apk文件時會使用所配置的簽名文件。