【Android自動化打包】03. APK的數字簽名
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 and Jarsigner 來生成數字證照,並給應用程式包簽名。
6)使用zipalign優化程式。
數字簽名的兩種模式
我們都知道Android系統不會安裝執行任何一款未經數字簽名的apk程式,無論是在模擬器上還是在實際的物理裝置上。所以我們會有一個疑問,為何在日常開發過程中我沒有進行任何簽名的操作,程式都會在模擬器和真機上執行?下面我們來講講
APK程式的兩種模式: 除錯模式(debug mode)和釋出模式(release mode)
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
相關文章
- 簽名打包Android版apkAndroidAPK
- 分享一個自動編譯,打包,簽名 android apk 的小指令碼編譯AndroidAPK指令碼
- Android 生成簽名apk與多渠道打包AndroidAPK
- Android自動打包、簽名、優化、上傳ANT指令碼Android優化指令碼
- 教你在Android自動打包解包簽名方法Android
- Android空包Apk簽名AndroidAPK
- Android使用Ant自動編譯簽名打包詳解Android編譯
- Android之重新簽名APKAndroidAPK
- Android App的簽名打包AndroidAPP
- 簽名apkAPK
- Android自定義打包apk名稱AndroidAPK
- 數字簽名
- Ant自動打包(可動態修改包名、資源等)生成不同簽字不同包名的APPAPP
- Android APK V1 簽名原理AndroidAPK
- Android加固之後Apk重簽名AndroidAPK
- Android 安全加密:數字簽名和數字證書Android加密
- Android安全加密:數字簽名和數字證書Android加密
- Apk 簽名的那些事APK
- Android 打包簽名 從生成keystore到完成簽名Android
- Android打包簽名那點事Android
- 數字簽名原理
- APK簽名報錯APK
- Android程式自動化打包Android
- android studio 打包簽名apk,完成微信和qq的的第三方分享功能AndroidAPK
- Android Apk 打包AndroidAPK
- 大話數字簽名
- Elgamal數字簽名原理GAM
- 加密與數字簽名加密
- 數字簽名(java) (轉)Java
- Android APK簽名原理和過程詳解AndroidAPK
- 驅動沒有數字簽名的解決方案
- 如何關閉win10的數字簽名_win10禁用數字簽名的方法Win10
- android 利用shell指令碼重新打包簽名Android指令碼
- 動態庫so打包到android apkAndroidAPK
- Window 7 驅動數字簽名解決方案
- 取消WindowsXP下驅動程式數字簽名(轉)Windows
- 四款超棒的jQuery數字化簽名外掛jQuery
- Android APK打包流程AndroidAPK