1.首先需要一個已簽名的apk文件(demo.apk)
可使用keytool -list -printcert -jarfile demo.apk查看簽名信息

image.png
2.一個簽名秘鑰(lgh.keystore)
3.把兩個文件放到同一個目錄下
4.把已簽名的apk文件后綴改成.zip,然后編輯這個文件,找到META-INF文件夾,并刪除
5.把.zip后綴改回.apk
6.使用命令 jarsigner -verify demo.apk查看是否簽名

image.png
7.使用命令
jarsigner -verbose -keystore lgh.keystore -storepass xxx -signedjar demo-signed.apk -digestalg SHA1 -sigalg MD5withRSA demo.apk [xxxkeystore別名]
命令行參數(shù)說明:
-jarsigner:是Java的簽名工具
-verbose:參數(shù)表示顯示出簽名詳細信息
-keystore:表示使用當前目錄中的lgh.keystore簽名證書文件
-storepass xxx :表示Keystore密碼:“xxx”
-signedjar demo-signed.apk:表示簽名后生成的APK名稱
-digestalg SHA1 -sigalg MD5withRSA:表示簽名的算法是使用MD5withRSA
(注意MD5withRSA算法已經(jīng)被棄用,取而代之的則是SHA256withRSA)
demo.apk :表示需要簽名的apk
[xxxkeystore別名] :表示lgh.keystore的別名,注意是別名不是文件名稱

image.png

image.png
8.使用命令 jarsigner -verify demo.apk查看是否簽名

image.png
提示說簽名不生效,使用的算法被禁用了,再回看apk的簽名信息中,發(fā)現(xiàn)使用的算法是SHA256withRSA,所以需要把MD5withRSA改成SHA256withRSA,重新對apk進行簽名,完成后查看是否簽名

image.png
完成~~~