天天看点

利用jar对apk进行签名

准备工作

首先将

jdk

中的

bin

文件夹添加至

path

环境变量中,准备一个未签名的

apk

应用。

判断是否签名

要判断一个

apk

文件是否已经进行过签名,使用解压应用(如

WinRAR

等)打开该文件,查看是否有一个

META-INF

的文件夹,如果有则代表已经签名;没有则表示没有签名。

利用jar对apk进行签名

将一个已经签名的应用转化为一个未签名的应用方法非常简单,只需要将应用中的

META-INF

文件夹删除就可以了。

可在解压应用界面(上图)直接删除;也可以先将应用程序的后缀名由

apk

更改为

rar

等,再解压,删除,然后压缩,将后缀名改成

apk

需要注意的一点是,在压缩时要保持原来的文件结构不变,需要选中所有文件(夹)来压缩,如下国:

利用jar对apk进行签名

使用

keytool

创建密钥

打开命令行,输入命令:

keytool -genkeypair -v -keystore demo.keystore -alias demo -keyalg RSA -validity 2000
           

参数说明:

  • genkeypair

    生成密钥对
  • alias

    密钥库名称,即最后保存的文件名称(

    demo.keystore

  • alias

    密钥别名(

    demo

  • keyalg

    密钥加密算法(

    RSA

  • validity

    密钥有效时间,单位为天(2000天)

而后输入密码:

利用jar对apk进行签名

接着会提示输入城市等信息,回车即可,默认为

unknown

利用jar对apk进行签名

确认,输入

y

(大小写均可),回车即可:

利用jar对apk进行签名

输入别名密码,若想设置不同密码,输入密码;一般情况下回车即可,默认设置相同密码:

利用jar对apk进行签名

完成后会在当前文件夹下创建一个密钥文件(

demo.keystore

)。

利用jar对apk进行签名

创建完成。

完成后可用

keytool

进行查看,输入命令:

keytool -list -v -keystore demo.keystore
           

运行结果:

利用jar对apk进行签名

使用

jarsigner

进行签名

输入命令:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore demo.keystore demo.apk demo -signedjar demo_signed.apk
           

参数说明:

  • java 1.8

    环境下,

    verbose

    digestalg

    两参数必须加上,否则生成的文件无法安装
  • keystore

    所使用的密钥
  • demo.apk

    要进行签名的文件
  • demo

    密钥别名
  • signedjar

    将签好名的应用保存为

    demo_signed.apk

    。此参数可省略,省略后直接改变原文件为已签名文件,不会生成新的文件。

运行结果:

利用jar对apk进行签名

看到

jar signed

字样时表示签名成功。

注:

本文在

WINDOWS 10

JAVA 1.8

的环境下进行测试,如在不同环境下可能会不适用!