日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 手动签名apk,记录手动签名APK的过程

發(fā)布時(shí)間:2024/1/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 手动签名apk,记录手动签名APK的过程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

記錄手動(dòng)簽名APK的過程

前兩天更新了華為平臺(tái)上的APK,被駁回,原因是新APK簽名和老的APK不一致,老用戶安裝會(huì)失敗,用命令行安裝會(huì)報(bào)如下的錯(cuò)誤:

harlanc@harlancdeMacBook-Pro ~/g/p/bin> adb install -r test.apk

adb: failed to install test.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.companyname.appname signatures do not match previously installed version; ignoring!]

因此需要更新簽名。

先介紹兩個(gè)相關(guān)的開源工具:

APK解壓打包工具

為什么需要這個(gè)工具下面會(huì)說明。

簽名顯示工具

顯示新Apk的簽名

查看Unity配置之后使用的是默認(rèn)keystore:

出包之后用簽名顯示工具打印簽名如下:

harlanc@harlancdeMacBook-Pro ~/g/G/keystore> /Users/harlanc/github/print-apk-signature/bin/print-apk-signature raw.apk

Verifies

Verified using v1 scheme (JAR signing): true

Verified using v2 scheme (APK Signature Scheme v2): true

Number of signers: 1

Signer #1 certificate DN: C=US, O=Android, CN=Android Debug

Signer #1 certificate SHA-256 digest: 31245f06c6efef970c1023a6ae1f445282d8beef634ed0ae312a83c933b18f47

Signer #1 certificate SHA-1 digest: 10f9c83b94b647da723d4ba19bf7fb621d284166

Signer #1 certificate MD5 digest: 855d771051e9078e47dacc1404eb4b30

Signer #1 key algorithm: RSA

Signer #1 key size (bits): 1024

Signer #1 public key SHA-256 digest: f8b9f8c7c121292f9e339ba6e68a8ba40ab363fd0a2c5b810dec2c4e02c5fdb0

Signer #1 public key SHA-1 digest: 11a91b3d390de784445746367d9e238667f03254

Signer #1 public key MD5 digest: 2f06d158c84e63277357d8e6d0270d0d

確實(shí)和上線的APK簽名是不一致的。

使用免費(fèi)的簽名工具

找到了之前的keystore文件,記起原來的簽名替換是使用的騰訊的一個(gè)工具叫做樂固:

不知道是這個(gè)工具的原因,還是Android SDK更新的原因,簽名雖然成功,但是簽名打印時(shí)會(huì)報(bào)錯(cuò):

harlanc@harlancdeMacBook-Pro ~/g/G/keystore> /Users/harlanc/github/print-apk-signature/bin/print-apk-signature raw_signed_zipalign.apk

DOES NOT VERIFY

ERROR: JAR signer CERT.RSA: JAR signature META-INF/CERT.SF indicates the APK is signed using APK Signature Scheme v2 but no such signature was found. Signature stripped?

手動(dòng)簽名

下面打算使用手動(dòng)簽名工具jarsigner,這個(gè)工具在JDK下面,具體安裝使用參考下面的帖子:

執(zhí)行簽名之后會(huì)報(bào)下面的錯(cuò)誤:

bash-3.2$ jarsigner -verbose -keystore gvr.keystore -signedjar raw_sign.apk raw.apk android

輸入密鑰庫的密碼短語:

jarsigner: 無法對 jar 進(jìn)行簽名: java.util.zip.ZipException: invalid entry compressed size (expected 21990 but got 22189 bytes)

經(jīng)查詢是因?yàn)閞aw.apk里面已經(jīng)有簽名所致,因此我們要把a(bǔ)pk里面的簽名刪掉,我們用apktool先把a(bǔ)pk,解壓,刪掉簽名文件夾: META-INF,再打包成新的APK。(比較麻煩,不知道有沒有更好的方法)

解壓APK

apktool d -f raw.apk

刪除簽名

find . -name META-INF

cd 到這個(gè)文件夾,然后刪除:

rm -rf META-INF/

打包

apktool b raw new_raw.apk

注意最后生成的APK在解壓APK后的文件夾下面。

最后執(zhí)行簽名命令

harlanc@harlancdeMacBook-Pro ~/g/G/keystore> jarsigner -verbose -keystore gvr.keystore -signedjar new_raw_sign.apk new_raw.apk android

大功告成。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的android 手动签名apk,记录手动签名APK的过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。