Android系統(tǒng)簽名看這一篇就夠了!

環(huán)境準(zhǔn)備: linux系統(tǒng) java11(大于java8,java中需包含keytool)? openssl?

Java11下載路徑https://www.openlogic.com/openjdk-downloads

后附相關(guān)知識(shí)與路徑

1.生成未簽名的Apk包

雙擊圖中assemble任務(wù)生成未簽名release包

注:如果在gradle中沒(méi)有Tasks模塊,在設(shè)置中開(kāi)啟Tasks?

附圖1

雙擊圖中assemble任務(wù)生成未簽名release包

注:如果在gradle中沒(méi)有Tasks模塊,在設(shè)置中開(kāi)啟Tasks?

附圖:

圖2

將Do not build Gradle task list during Gradle sync 取消勾選之后sync即可


圖3

2.為了確定系統(tǒng)簽名的platform.x509.pem,platform.pk8可以在設(shè)備上使用,建議先用命令生成簽名包驗(yàn)證是否簽名成功,并且可以安裝到相應(yīng)設(shè)備

命令:java -jar platform.x509.pem(地址) platform.pk8(地址) app-unsigned.apk(地址) app-signed.apk(地址)

如果此時(shí)簽名出現(xiàn)錯(cuò)誤


圖4

需要在命令中添加libconscrypt_openjdk_jni.so

新命令:??

java -Djava.library.path='/home/bomine/Desktop/signer/'(上層文件夾地址) -jar platform.x509.pem(地址) platform.pk8(地址) app-unsigned.apk(地址) app-signed.apk(地址)

此時(shí)即可簽名成功

注:此方法可做臨時(shí)使用,為了方便調(diào)試與開(kāi)發(fā),可將platform.x509.pem platform.pk8轉(zhuǎn)換成為.jks文件方便使用android studio打包

注:此方法關(guān)鍵文件及截圖已在下方列出


圖5

3.將platform.x509.pem platform.pk8 轉(zhuǎn)成.jks

1)將使用.pk8生成platform.priv.pem (.pem即可,文件名可隨意修改)

命令: openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt

圖6

2)生成.p12,此時(shí)需輸入兩次密碼,并且要記住 -name后所設(shè)置的alias,此處設(shè)置的alias為backpack

命令: openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.p12 -name backpack


圖7

3)生成.jks文件,此處需注意-srcstorepass 后為步驟2)設(shè)置的密碼,此處如果輸入錯(cuò)誤會(huì)導(dǎo)致出現(xiàn)密碼不對(duì)的錯(cuò)誤,輸入兩次密碼后即可生成.jks

命令:keytool -importkeystore -destkeystore humangSysLauncherx.jks -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass backpack666 -alias backpack


圖8

4.使用此.jks

1)在清單文件AndroidManifest中輸入android:sharedUserId="android.uid.system",之后打開(kāi)圖示選項(xiàng)

圖9

2)選擇圖示選項(xiàng),進(jìn)行下一步

圖10


圖11

3)按照?qǐng)D示選項(xiàng)選擇,Destination Folder為apk輸出路徑,V1,V2,為輸出包類(lèi)型,兩個(gè)都要選擇

如果只選擇V1會(huì)導(dǎo)致安裝時(shí)產(chǎn)生[INSTALL_PARSE_FAILED_NO_CERTIFICATES]報(bào)錯(cuò)

如果只選擇V2會(huì)導(dǎo)致簽名不成功

圖12

5.查看apk包簽名(此操作查看系統(tǒng)包名是否簽發(fā)成功)

命令:keytool -printcert -jarfile app-release.apk (apk路徑)

注:此圖為普通簽名


圖13

注:此圖為系統(tǒng)簽名

圖14

注:此圖為未簽名成功


圖15

相關(guān)知識(shí):

Android系統(tǒng)中主要簽名文件:

media.pk8 ,media.x509.pem?

platform.pk8 ,platform.x509.pem

releasekey.pk8,releasekey.x509.pem

shared.pk8,shared.x509.pem

testkey.pk8,testkey.x509.pem

Android系統(tǒng)中簽名文件路徑:

build/target/product/security/目錄下

Android系統(tǒng)中signapk.jar簽名文件路徑:

/out/host/linux-x86/framework/

.pk8和.x509.pem的區(qū)別

.pk8就是私鑰文件,用于對(duì)apk進(jìn)行簽名。這個(gè)私鑰需要保密保存,不能公開(kāi)。

.x509.pem是證書(shū)文件,相當(dāng)于公鑰。這個(gè)可以公開(kāi),主要用于驗(yàn)證某個(gè)apk是否由相應(yīng)的私鑰簽名。

libconscrypt_openjdk_jni.so路徑

prebuilts/sdk/tools/linux/lib64/libconscrypt_openjdk_jni.so

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

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

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