【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中APK簽名工具之jarsigner和apksigner詳解_第1頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中APK簽名工具之jarsigner和apksigner詳解_第2頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中APK簽名工具之jarsigner和apksigner詳解_第3頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中APK簽名工具之jarsigner和apksigner詳解_第4頁(yè)
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中APK簽名工具之jarsigner和apksigner詳解_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余2頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中APK簽名工具之jarsigner和apksigner詳解

一.工具介紹jarsigner是JDK提供的針對(duì)jar包簽名的通用工具,

位于JDK/bin/jarsigner.exeapksigner是Google官方提供的針對(duì)Androidapk簽名及驗(yàn)證的專用工具,

位于AndroidSDK/build-tools/SDK版本/apksigner.bat不管是apk包,還是jar包,本質(zhì)都是zip格式的壓縮包,所以它們的簽名過(guò)程都差不多(僅限V1簽名),

以上兩個(gè)工具都可以對(duì)Androidapk包進(jìn)行簽名.1.V1和V2簽名的區(qū)別在AndroidStudio中點(diǎn)擊菜單Build->Generatesignedapk...打包簽名過(guò)程中,

可以看到兩種簽名選項(xiàng)V1(JarSignature)

V2(FullAPKSignature),

剛開(kāi)始升級(jí)AS看到這個(gè)懵了,既然是APKSignature,就放心偷懶選了V2,結(jié)果安裝失?????無(wú)奈,只能查資料...從Android7.0開(kāi)始,谷歌增加新簽名方案V2Scheme(APKSignature);

但Android7.0以下版本,只能用舊簽名方案V1scheme(JARsigning)V1簽名:

V2簽名:

V2簽名優(yōu)點(diǎn)很明顯:

注意:apksigner工具默認(rèn)同時(shí)使用V1和V2簽名,以兼容Android7.0以下版本2.zipalign和V2簽名位于AndroidSDK/build-tools/SDK版本/zipalign.exe

zipalign是對(duì)zip包對(duì)齊的工具,使APK包內(nèi)未壓縮的數(shù)據(jù)有序排列對(duì)齊,從而減少APP運(yùn)行時(shí)內(nèi)存消耗

zipalign可以在V1簽名后執(zhí)行

但zipalign不能在V2簽名后執(zhí)行,只能在V2簽名之前執(zhí)行?。。《?簽名步驟1.生成密鑰對(duì)(已有密鑰庫(kù),可忽略)Eclipse或AndroidStudio在Debug時(shí),對(duì)App簽名都會(huì)使用一個(gè)默認(rèn)的密鑰庫(kù):

1.生成密鑰對(duì)

進(jìn)入JDK/bin,輸入命令

keytool-genkeypair-keystore密鑰庫(kù)名-alias密鑰別名-validity天數(shù)-keyalgRSA

參數(shù):

-genkeypair

生成一條密鑰對(duì)(由私鑰和公鑰組成)

-keystore

密鑰庫(kù)名字以及存儲(chǔ)位置(默認(rèn)當(dāng)前目錄)

-alias

密鑰對(duì)的別名(密鑰庫(kù)可以存在多個(gè)密鑰對(duì),用于區(qū)分不同密鑰對(duì))

-validity

密鑰對(duì)的有效期(單位:天)

-keyalg

生成密鑰對(duì)的算法(常用RSA/DSA,DSA只用于簽名,默認(rèn)采用DSA)

-delete

刪除一條密鑰

-genkeypair

生成一條密鑰對(duì)(由私鑰和公鑰組成)

-keystore

密鑰庫(kù)名字以及存儲(chǔ)位置(默認(rèn)當(dāng)前目錄)

-alias

密鑰對(duì)的別名(密鑰庫(kù)可以存在多個(gè)密鑰對(duì),用于區(qū)分不同密鑰對(duì))

-validity

密鑰對(duì)的有效期(單位:天)

-keyalg

生成密鑰對(duì)的算法(常用RSA/DSA,DSA只用于簽名,默認(rèn)采用DSA)

-delete

刪除一條密鑰

提示:可重復(fù)使用此條命令,在同一密鑰庫(kù)中創(chuàng)建多條密鑰對(duì)

例如:

在debug.keystore中新增一對(duì)密鑰,別名是release

2.查看密鑰庫(kù)

進(jìn)入JDK/bin,輸入命令

keytool-list-v-keystore密鑰庫(kù)名

參數(shù):

-list查看密鑰列表

-v

查看密鑰詳情

-list查看密鑰列表

-v

查看密鑰詳情

例如:

現(xiàn)在debug.keystore密鑰庫(kù)中有兩對(duì)密鑰,別名分別是androiddebugkeyrelease2.簽名1.方法一(jarsigner,只支持V1簽名)

進(jìn)入JDK/bin,輸入命令

jarsigner-keystore密鑰庫(kù)名xxx.apk密鑰別名

從JDK7開(kāi)始,jarsigner默認(rèn)算法是SHA256,但Android4.2以下不支持該算法,

所以需要修改算法,添加參數(shù)-digestalgSHA1-sigalgSHA1withRSA

jarsigner-keystore密鑰庫(kù)名-digestalgSHA1-sigalgSHA1withRSAxxx.apk密鑰別名

參數(shù):

-digestalg

摘要算法

-sigalg

簽名算法

-digestalg

摘要算法

-sigalg

簽名算法

例如:

用JDK7及以上jarsigner簽名,不支持Android4.2以下

用JDK7及以上jarsigner簽名,兼容Android4.2以下

2.方法二(apksigner,默認(rèn)同時(shí)使用V1和V2簽名)

進(jìn)入AndroidSDK/build-tools/SDK版本,輸入命令

apksignersign--ks密鑰庫(kù)名--ks-key-alias密鑰別名xxx.apk

若密鑰庫(kù)中有多個(gè)密鑰對(duì),則必須指定密鑰別名

apksignersign--ks密鑰庫(kù)名--ks-key-alias密鑰別名xxx.apk

禁用V2簽名

參數(shù):

--ks-key-alias

密鑰別名,若密鑰庫(kù)有一個(gè)密鑰對(duì),則可省略,反之必選

--v1-signing-enabled是否開(kāi)啟V1簽名,默認(rèn)開(kāi)啟

--v2-signing-enabled是否開(kāi)啟V2簽名,默認(rèn)開(kāi)啟

--ks-key-alias

密鑰別名,若密鑰庫(kù)有一個(gè)密鑰對(duì),則可省略,反之必選

--v1-signing-enabled是否開(kāi)啟V1簽名,默認(rèn)開(kāi)啟

--v2-signing-enabled是否開(kāi)啟V2簽名,默認(rèn)開(kāi)啟

例如:

在debug.keystore密鑰庫(kù)只有一個(gè)密鑰對(duì)

在debug.keystore密鑰庫(kù)中有多個(gè)密鑰對(duì),所以必須指定密鑰別名

3.簽名驗(yàn)證1.方法一(keytool,只支持V1簽名校驗(yàn))

進(jìn)入JDK/bin,輸入命令

參數(shù):

-printcert

打印證書內(nèi)容

-jarfile<filename>

已簽名的jar文件或apk文件

-printcert

打印證書內(nèi)容

-jarfile<filename>

已簽名的jar文件或apk文件

2.方法二(apksigner,支持V1和V2簽名校驗(yàn))

進(jìn)入AndroidSDK/build-tools/SDK版本,輸入命令

參數(shù):

-v,--verbose顯示詳情(顯示是否使用V1和V2簽名)

--print-certs顯示簽名證書信息

-v,--verbose顯示詳情(顯示是否使用V1和V2簽名)

--print-certs顯示簽名證書信息

例如:

Verifies

Verifiedusingv1scheme(JARsigning):true

Verifiedusingv2scheme(APKSignatureSchemev2):true

N

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論