Android簽名知識小結_Android

來源:互聯網
上載者:User

一、為什麼要簽名

開發Android的人這麼多,完全有可能大家都把類名,包名起成了一個同樣的名字,這時候如何區分?簽名這時候就是起區分作用的。

由於開發商可能通過使用相同的Package Name來混淆替換已經安裝的程式,簽名可以保證相當名字,但是簽名不同的包不被替換。

APK如果使用一個key簽名,發布時另一個key簽名的檔案將無法安裝或覆蓋老的版本,這樣可以防止你已安裝的應用被惡意的第三方覆蓋或替換掉。

這樣簽名其實也是開發人員的身份標識。交易中抵賴等事情發生時,簽名可以防止抵賴的發生。

二、簽名的注意事項

Android系統要求所有的程式經過數位簽章才能安裝,如果沒有可用的數位簽章,系統將不許安裝運行此程式。不管是模擬器還是真實手機。因此,在裝置或者是模擬器上運行偵錯工具之前,必須為應用程式設定數位簽章。

Android簽名的數位憑證不需要權威機構來認證,是開發人員自己產生的數位憑證,即所謂的自簽名。數位憑證用來標識應用程式的作者和在應用程式之間建立信任關係,而不是用來決定終端使用者可以安裝哪些應用程式。

系統僅僅會在安裝的時候測試簽署憑證的有效期間,如果應用程式的簽名是在安裝之後才到期,那麼應用程式仍然可以正常啟用。

可以使用標準工具-Keytool and Jarsigner-產生密鑰,來簽名應用程式的.apk檔案。

簽名後需使用zipalign最佳化程式。

模擬器開發環境,開發時通過ADB介面上傳的程式會先自動被簽有Debug許可權,然後才傳遞到模擬器。Eclipse菜單的Window -> Preferences -> Android –> Build 下顯示的是我們預設的調試用的簽名數位憑證。

正式發布一個Android應用時,必須使用一個合適的私密金鑰產生的數位憑證來給程式簽名,不能使用ADT外掛程式或者ANT工具產生的調試認證來發布。

不止一次有用到Android簽名相關的知識,每次都幾乎從零開始在Google上搜尋找,不想在繼續這樣了,找了個時間好好整理了一下自己用到的一些片段知識,於是乎放到這裡,一是備忘,二是協助別人。

從APK檔案中擷取簽名資訊

使用方法

keytool -list -printcert -jarfile your_apk_file

輸出資訊

簽名Owner,Issuer等資訊
簽名的fingerprints,如md5及sha1等值
簽名有效期間等資訊

樣本效果

16:29 $ keytool -list -printcert -jarfile akoi_1.2.apk
Signer #1:

Signature:

Owner: CN=Andrew Wallace, OU=droidyue.com, O=droidyue.com, L=Beijing, ST=Beijing, C=86Issuer: CN=Andrew Wallace, OU=droidyue.com, O=droidyue.com, L=Beijing, ST=Beijing, C=86Serial number: 11a8a4a3Valid from: Tue Feb 10 18:07:43 CST 2015 until: Sun Jun 13 18:07:43 CST 3013Certificate fingerprints:MD5: 46:C5:BE:EF:B5:C9:00:E1:FA:42:50:50:57:54:CA:15SHA1: C1:14:5D:0A:C2:BF:F6:06:43:20:AE:2C:07:12:97:58:C2:1B:39:D1SHA256: 0E:88:7D:C2:4C:D6:84:A7:58:D4:24:1E:9D:38:F9:05:98:1E:B2:A2:D7:CB:0F:81:74:60:5B:38:89:FF:21:1CSignature algorithm name: SHA256withRSAVersion: 3

從簽名檔案中擷取簽名資訊

使用方法

keytool -list -v -keystore your_kestore_file
注意,上述命令執行後,會提示輸入密碼,其實輸入錯誤也沒有關係,不影響結果。

輸出資訊

簽名Owner,Issuer等資訊
簽名的fingerprints,如md5及sha1等值
簽名有效期間等資訊

樣本效果

Keystore type: JKSKeystore provider: SUNYour keystore contains 1 entryAlias name: droidyue.comCreation date: Feb 10, 2015Entry type: PrivateKeyEntryCertificate chain length: 1Certificate[1]:Owner: CN=Andrew Wallace, OU=droidyue.com, O=droidyue.com, L=Beijing, ST=Beijing, C=86Issuer: CN=Andrew Wallace, OU=droidyue.com, O=droidyue.com, L=Beijing, ST=Beijing, C=86Serial number: 11a8a4a3Valid from: Tue Feb 10 18:07:43 CST 2015 until: Sun Jun 13 18:07:43 CST 3013Certificate fingerprints:MD5: 46:C5:BE:EF:B5:C9:00:E1:FA:42:50:50:57:54:CA:15SHA1: C1:14:5D:0A:C2:BF:F6:06:43:20:AE:2C:07:12:97:58:C2:1B:39:D1SHA256: 0E:88:7D:C2:4C:D6:84:A7:58:D4:24:1E:9D:38:F9:05:98:1E:B2:A2:D7:CB:0F:81:74:60:5B:38:89:FF:21:1CSignature algorithm name: SHA256withRSAVersion: 3

重新簽名APK

在沒有源碼情況下,我們就能對apk進行更換籤名。

指令碼

signapk.sh
備用地址

使用方法

bash signapk.sh your_apk_file your_keystore_file keystore_pass keystore_alias

樣本效果

16:57 $ bash signapk.sh weixin6313android740.apk ~/Documents/baidu_disk/百度雲同步盤/droidapp/mykiki 123456 droidyue.comparam1 weixin6313android740.apkparam2 /Users/androidyue/Documents/droidapp/mykikiparam3 123456param4 droidyue.comdeleting: META-INF/MANIFEST.MFdeleting: META-INF/DROIDYUE.SFdeleting: META-INF/DROIDYUE.RSAadding: META-INF/MANIFEST.MFadding: META-INF/DROIDYUE.SFadding: META-INF/DROIDYUE.RSA......Verification succesful

產生的檔案會放在目前的目錄,其檔案名稱相對輸入檔案,增加了signed_首碼,比如對weixin6313android740.apk進行上述操作得到的輸出檔案是signed_weixin6313android740.apk

Gradle build產生簽名APK

想要在執行gradle build時產生指定簽名的apk,需要在build.gradle中如下修改

android {signingConfigs {release {storeFile file("myrelease.keystore")storePassword "********"keyAlias "******"keyPassword "******"}}buildTypes {release {signingConfig signingConfigs.release}}}

以上所述是小編給大家介紹的Android簽名知識小結,希望對大家有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.