Android簽名

一坎炼、簽名方式

在Android中愧膀,所有 APK 必須先使用證書進行簽名才能安裝到設備上。當前主流的有兩種簽名選項 V1(Jar Signature) 谣光、V2(Full APK Signature)檩淋。從Android 7.0開始, 谷歌增加新簽名方案 V2,但Android 7.0以下版本, 只能用舊簽名方案 V1萄金。jarsigner使用java自帶的jar簽名蟀悦,簽名方案只能v1。apksigner是Android特有的簽名氧敢,支持多種簽名方案(v1~v4)日戈。

  • V1簽名
    對zip壓縮包的每個文件進行驗證, 簽名后還能對壓縮包修改福稳。對V1簽名的apk解壓后涎拉,在META-INF存放簽名文件(MANIFEST.MF, CERT.SF, CERT.RSA)瑞侮,其中MANIFEST.MF文件保存所有文件的SHA1指紋。
  • V2簽名
    對zip壓縮包的整個文件驗證鼓拧, 簽名后不能修改壓縮包(包括zipalign)半火,對V2簽名的apk解壓,沒有發(fā)現(xiàn)簽名文件季俩,重新壓縮后V2簽名就失效钮糖。V2簽名更安全因為不能修改壓縮包,簽名驗證時間更短酌住,不需要解壓驗證店归,安裝速度加快。apksigner工具默認同時使用V1和V2簽名酪我。
  • V3簽名
    v3 是在 Android 9 中引入的消痛。Android 9 支持 APK 密鑰輪替,這使應用能夠在 APK 更新過程中更改其簽名密鑰都哭。為了實現(xiàn)輪替秩伞,APK 必須指示新舊簽名密鑰之間的信任級別。
  • V4 簽名
    v4 是在 Android 11 中引入的欺矫。v4 支持與流式傳輸兼容的簽名方案纱新。v4 簽名需要 v2 或 v3 簽名作為補充。 v4同樣是為了新功能而出現(xiàn)的: ADB 增量 APK 安裝穆趴。

二脸爱、簽名步驟

1.工具文件

Android Studio在Debug時,對App簽名都會使用一個默認的密鑰庫未妹,默認在C:\Users\用戶名.android\debug.keystore
jarsigner 位于JDK/bin
apksigner 位于Android SDK/build-tools/SDK版本
apktool 官網(wǎng)下載apktool.bat和apktool.jar

2.查看密鑰庫

keytool -list -v -keystore debug.keystore

3.移除現(xiàn)有的簽名

使用Android SDK中的apktool工具來解包APK簿废,移除現(xiàn)有的簽名。
apktool命令解包一個APK文件時教寂,apktool會自動移除該APK的簽名捏鱼。這是因為APK的簽名是保存在META-INF目錄下的,而當你使用apktool d(即decode)命令解包APK時酪耕,apktool會解析APK文件并提取出其中的資源导梆、代碼等,但不會保留簽名信息迂烁。
apktool d -f your_app.apk -o output_dir

4.重新打包APK

解包完成后看尼,重新打包APK。
apktool b output_dir -o unsigned.apk

5.zipalign和V2簽名

zipalign 是對zip包對齊的工具,使APK包內(nèi)未壓縮的數(shù)據(jù)有序排列對齊,從而減少APP運行時內(nèi)存消耗盟步。zipalign可以在V1簽名后執(zhí)行藏斩,但zipalign不能在V2簽名后執(zhí)行,只能在V2簽名之前執(zhí)行
位于Android SDK/build-tools/SDK版本/zipalign.exe

  • 對齊
    zipalign -p -f -v 4 待簽名.apk 對齊后.apk
  • 檢查APK是否對齊
    zipalign -c -v 4 in.apk

6.簽名

  • jarsigner
    jarsigner -keystore 秘鑰文件 -storepass 密鑰庫的密碼 -keypass 私鑰密 <apk_file>.apk <alias>
  • apksigner
    apksigner sign --ks 密鑰文件 --ks-key-alias 密鑰別名 --ks-pass pass:密碼 --key-pass pass:密碼 --out 簽名.apk 對齊.apk
    若密鑰庫中有多個密鑰對,則必須指定密鑰別名却盘,若密鑰庫有一個密鑰對,則可省略
    禁用V2簽名
    apksigner sign --v2-signing-enabled false --ks 密鑰庫名 xxx.apk

7.簽名驗證

  • keytool
    keytool -printcert -jarfile MyApp.apk
  • apksigner
    apksigner verify -v --print-certs xxx.apk
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狰域,一起剝皮案震驚了整個濱河市媳拴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兆览,老刑警劉巖屈溉,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抬探,居然都是意外死亡子巾,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門小压,熙熙樓的掌柜王于貴愁眉苦臉地迎上來线梗,“玉大人,你說我怎么就攤上這事怠益∫巧Γ” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵蜻牢,是天一觀的道長僻造。 經(jīng)常有香客問我,道長孩饼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任竹挡,我火速辦了婚禮镀娶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揪罕。我一直安慰自己梯码,他們只是感情好,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布好啰。 她就那樣靜靜地躺著轩娶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪框往。 梳的紋絲不亂的頭發(fā)上鳄抒,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音椰弊,去河邊找鬼许溅。 笑死,一個胖子當著我的面吹牛秉版,可吹牛的內(nèi)容都是我干的贤重。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼清焕,長吁一口氣:“原來是場噩夢啊……” “哼并蝗!你這毒婦竟也來了祭犯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滚停,失蹤者是張志新(化名)和其女友劉穎沃粗,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铐刘,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡陪每,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了镰吵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檩禾。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疤祭,靈堂內(nèi)的尸體忽然破棺而出盼产,到底是詐尸還是另有隱情,我是刑警寧澤勺馆,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布戏售,位于F島的核電站,受9級特大地震影響草穆,放射性物質(zhì)發(fā)生泄漏灌灾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一悲柱、第九天 我趴在偏房一處隱蔽的房頂上張望锋喜。 院中可真熱鬧,春花似錦豌鸡、人聲如沸嘿般。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炉奴。三九已至,卻和暖如春蛇更,著一層夾襖步出監(jiān)牢的瞬間瞻赶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工派任, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留共耍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓吨瞎,卻偏偏與公主長得像痹兜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子颤诀,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容