由于某些限制,会有这样的需求:拿不到apk源码的情况下要对其中的一些资源进行修改,在Android签名的限制下,直接解压修改会导致签名不一致,这样的apk文件在手机上是无法被安装的,这样就只能对apk进行重新签名来生成新的apk包。从另外一个角度上来说,这也是从系统的级别来保证安全:一个被特定私钥签名的apk是无法被篡改且无法抵赖的。
要对apk进行重新签名,首先要生成自己的公私钥对,然后删除apk中原有的签名信息再对apk进行重新签名。通过解压可知,apk的签名信息全都存在于META-INF中,删除这个文件,原apk就变成了一个未签名的apk。
后面的做法摘自http://blog.csdn.net/zengyangtech/article/details/5801708,感谢原作者的探索。
C:/Program Files/Java/jdk1.6.0_10/bin>keytool -genkey -alias android123.keystore
-keyalg RSA -validity 20000 -keystore android123.keystore
输入keystore密码:[密码不回显]
再次输入新密码:[密码不回显]
您的名字与姓氏是什么?
[Unknown]: android123
您的组织单位名称是什么?
[Unknown]: www.android123.com.cn
您的组织名称是什么?
[Unknown]: www.android123.com.cn
您的组织名称是什么?
[Unknown]: www.android123.com.cn
您所在的城市或区域名称是什么?
[Unknown]: New York
您所在的州或省份名称是什么?
[Unknown]: New York
该单位的两字母国家代码是什么
[Unknown]: CN
CN=android123, OU=www.android123.com.cn, O=www.android123.com.cn, L=New York, ST
=New York, C=CN 正确吗?
[否]: Y
输入<android123.keystore>的主密码[img][/img]
(如果和 keystore 密码相同,按回车):
通过以上步骤可以获得一个keystore,里面存储的是公私密钥信息。
接下来就可以签名了。
执行下面这句jarsigner -verbose -keystore test.keystore -signedjar test_signed.apk test.apk test.keystore 就可以生辰签名的apk文件,这里输入文件android123.apk,最终生成android123_signed.apk为Android签名后的APK执行文件。下面提示输入的密码和keytool输入的一样就行了
这里-keystore 里是刚才生成的密钥
-signedjar 第一个参数test_signed.apk是输出apk,test.apk是原apk,testkeystore是刚才生成的密钥对的别名
执行完毕之后就可以得到重新签名的apk了。
更加详细的参数解释可以在原作者博客里找到。
分享到:
相关推荐
Windows版本 Android Apk签名工具
Android_apk并签名
将原来APK的签名文件重新签名生成新的keystore文件,新生成的签名文件和密码要记住哦
android APK 重新签名
android10 apk签名文件,签名后可以获取系统权限
我们同样可以将Eclipse生成的apk按照场景一的方法进行重新签名,再安装到我们的设备上。但是,有时可能我们会经常修改apk源码进行调试验证,如果每次都把apk拿出来进行重新签名,再安装,这样确实麻烦了一些。...
android 对于apk签名汇总
Android APK签名工具支持v2、v3和v4签名,用于对Android应用进行数字签名以确保应用的完整性和认证。v2签名是传统的APK签名方案,用于验证APK文件的完整性和真实性。v3签名引入了对APK的增量更新支持,减少了重新...
这里详细的介绍了如何使用命令编译apk 签名 打包,很实用,如果你是Android开发者一定要知道如何编译签名apk
用于Android的APK签名,能够使用系统权限,Android系统签名
android系统签名工具,用此工具可以生成系统签名文件,使用android studio开发的apk可以用此文件签名
android给未签名的apk签名命令。 准备文件 1、unsign.apk(未签名的apk) 2、shanhy.keystore(签名证书文件) 命令语法: jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkIn] [alias] 例...
android Apk签名的3种方式
本工具可以对debug的apk文件进行系统签名,实现一些系统级app的功能,例如:app静默升级,修改系统时间,时区等功能
微信官方的下载链接失效了。可以用这个下载。
简单方便通过批处理对android apk进行系统签名,这样app就可以获得到root权限运行。
如果你需要开发一个带有系统...给apk加上开发者签名(jks文件),使用keytool-importkeypair 对jks文件进行系统签名,在出包的时候,直接使用带有系统签名的jks对apk进行签名,这样编译生成的apk文件就自带系统签名了
获取apk的sha256哈希值,对apk的签名进行验证,仅供参考
Android 系统签名文件,最高层级的签名文件,解决无签名,无权限问题