Android release版本apk添加數(shù)字簽名

為什么要簽名

簡單來說,Android系統(tǒng)要求這個做。
Android系統(tǒng)要求每一個Android應(yīng)用程序必須要經(jīng)過數(shù)字簽名才能夠安裝到系統(tǒng)中,也就是說如果一個Android應(yīng)用程序沒有經(jīng)過數(shù)字簽名,是沒有辦法安裝到 系統(tǒng)中的!Android通過數(shù)字簽名來標(biāo)識應(yīng)用程序的作者和在應(yīng)用程序之間建立信任關(guān)系,不是用來決定最終用戶可以安裝哪些應(yīng)用程序。這個數(shù)字簽名由應(yīng) 用程序的作者完成,并不需要權(quán)威的數(shù)字證書簽名機(jī)構(gòu)認(rèn)證,它只是用來讓應(yīng)用程序包自我認(rèn)證的。

Android應(yīng)用程序簽名步驟

工具

  • 1 keytool:生成數(shù)字證書,即密鑰,也就是擴(kuò)展名為.keystore的文件(該工具位于jdk安裝路徑的bin目錄下);
  • 2 jarsigner:使用數(shù)字證書給apk文件簽名(該工具位于jdk安裝路徑的bin目錄下);
  • 3 zipalign:對簽名后的apk進(jìn)行優(yōu)化,提高與Android系統(tǒng)交互的效率(該工具位于Android sdk build-tools>版本號(如23.0.3)目錄下);

生成未經(jīng)簽名的apk

生成方式多種多樣,作者這邊使用Ionic制作的apk,其他小伙伴也應(yīng)該有其他途徑,目的相同——一個未經(jīng)簽名的apk。

三步走

每種工具都用cmd進(jìn)入該工具所在目錄

1.使用keytool工具生成數(shù)字證書

keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore

說明:

  1. keytool是工具名稱,-genkey意味著執(zhí)行的是生成數(shù)字證書操作,-v表示將生成證書的詳細(xì)信息打印出來,顯示在dos窗口中;
  2. -alias demo.keystore表示證書的別名為“ demo.keystore”,當(dāng)然可以不和上面的文件名一樣;
  3. -keyalg RSA 表示生成密鑰文件所采用的算法為RSA;
  4. -validity 40000 表示該數(shù)字證書的有效期為40000天,意味著20000天之后該證書將失效
  5. -keystore demo.keystore 表示生成的數(shù)字證書的文件名為“demo.keystore ”;
    執(zhí)行之后會提示輸入信息,填完就能得到一個demo.keystore

2.使用jarsigner工具為Android應(yīng)用程序簽名

jarsigner -verbose -keystore demo.keystore -signedjar shouhuan_signed.apk shouhuan.apk demo.keystore

說明:

  1. jarsigner是工具名稱,-verbose表示將簽名過程中的詳細(xì)信息打印出來,顯示在dos窗口中;
  2. -keystore demo.keystore 表示簽名所使用的數(shù)字證書所在位置,這里沒有寫路徑,表示在當(dāng)前目錄下;
  3. -signedjar shouhuan_signed.apk shouhuan.apk 表示給shouhuan.apk文件簽名,簽名后的文件名稱為shouhuan_signed.apk;
  4. 最后面的demo.keystore 表示證書的別名,對應(yīng)于生成數(shù)字證書時-alias參數(shù)后面的名稱

3.使用zipalign工具優(yōu)化已簽名的apk

zipalign -v 4 shouhuan_signed.apk shouhuan_signed_aligned.apk

說明:

  1. zipalign是工具名稱,-v表示在DOS窗口打印出詳細(xì)的優(yōu)化信息;
  2. shouhaun_signed.apk shouhuan_signed_aligned.apk 表示對已簽名文件shouhuan_signed.apk進(jìn)行優(yōu)化,優(yōu)化后的文件名為shouhuan_signed_aligned.apk

相同簽名的程序才能覆蓋安裝,注意升級的時候要相同的keystore

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 參考什么是 Android 簽名機(jī)制,Bluebox Security 發(fā)現(xiàn)的漏洞有何威脅? Android應(yīng)用程...
    合肥黑閱讀 2,151評論 1 16
  • Android安全加密專題文章索引 Android安全加密:對稱加密 Android安全加密:非對稱加密 Andr...
    JackChen1024閱讀 2,486評論 1 23
  • 寫在前面 今天使用高德地圖為應(yīng)用添加Key的時候,發(fā)現(xiàn)有一項需要用到安全碼SHA1,而SHA1存在于Keystor...
    代碼咖啡閱讀 27,178評論 5 34
  • 又一年生日。 今年一幫人幫我過生日,大家唱生日歌的時候其實有感動到,不過對于面對面表達(dá)情感這些我實在是,不太會說,...
    featherD閱讀 193評論 0 0

友情鏈接更多精彩內(nèi)容