android: 对普通的apk应用进行签名

准备工作

jdk (我这里的是jdk1.8)

一个未签名的apk应用。

判断是否签名

要判断一个apk文件是否已经进行过签名,使用解压应用(如WinRAR等)打开该文件,查看是否有一个META-INF的文件夹,如果有则代表已经签名;没有则表示没有签名。

 将一个已经签名的应用转化为一个未签名的应用方法非常简单,只需要将应用中的META-INF文件夹删除就可以了。

可在解压应用界面(上图)直接删除;也可以先将应用程序的后缀名由apk更改为rar等,再解压,删除,然后压缩,将后缀名改成apk。

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

 使用keytool 创建密钥

打开jdk的bin文件夹

 

 

 在当前路径下打开命令行,输入命令:

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

其中:

  • genkeypair 生成密钥对
  • alias 密钥库名称,即最后保存的文件名称(reaisil.keystore
  • alias 密钥别名(realsil-keystore
  • keyalg 密钥加密算法(RSA
  • validity 密钥有效时间,单位为天(2000天)
然后输入密码,记住这个密码,我们接下来会再次用到。

密码输入完毕后,按照提示进一步完善个人的其它信息:

提示是否正确时,输入小写字母: y, 点击回车

确认完毕后,会再次让你输入先前提供的密码。输入完毕后,点回车,这样当前目录下就会生成一个新的keystore文件。

 

这样一个keystore就创建好了,完成后可以使用keytool -list 命令查看当前keystore 的详细信息:

keytool -list -v -keystore realsil.keystore

使用jarsigner进行签名

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

参数说明:

在java 1.8环境下,verbose和digestalg两参数必须加上,否则生成的文件无法安装
keystore 所使用的密钥
Test_Demo.apk 要进行签名的文件
realsil-keystore 密钥别名
signedjar 将签好名的应用保存为demo_signed.apk。此参数可省略,省略后直接改变原文件为已签名文件,不会生成新的文件。

执行:

 

看到jar 已签名,代表签名成功,接下来便可以使用生成的demo_signed.apk进行安装了。

 

PS: 

本人测试环境为:win10 64位,jdk1.8, 如在不同环境下可能会不适用。

参考链接

对apk应用进行签名

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   夜行过客  阅读(5530)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
历史上的今天:
2019-05-08 android: 日期转Unix时间戳,Unix时间戳转日期,带时区
点击右上角即可分享
微信分享提示