在没有源代码的情况下,通过反编译apk修改以后重新打包的apk,需要重新签名才能安装。
1. 将JDK路径添加到PATH环境变量中:C:\Program Files\Java\jdk1.6.0_33\bin
2. 创建keystore
keytool -genkey -v -keystore fetion.keystore -alias fetion_sign -keyalg RSA -keysize 2048 -validity 20000
说明:为了不改动签名信息,首先通过jarsigner得到了原始的签名信息关于组织机构等的信息,具体见下面介绍获取签名信息的方法。
输入keystore密码:[否]: 是
正在为以下对象生成 2,048 位 RSA 密钥对和自签名证书 (SHA1withRSA)(有效期为 20,000 天):
CN=高雷, OU=北京新媒传信科技有限公司, O=新媒传信, L=北京, ST=北京, C=cn
输入<fetion_sign>的主密码
(如果和 keystore 密码相同,按回车):
[正在存储 fetion.keystore]
3. 给apk签名:
首先将原apk更名为rar文件,找到META-INF目录,将里面的文件全部删除。重命名为apk
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore fetion.keystore fetion.apk fetion_sign
验证是否签名完成:
jarsigner -verify fetion.apk
jar 已验证。
如果需要知道更详细的信息:
jarsigner -verify -verbose -certs fetion.apk > sign.txt
以上仅供技术研究分析用途。
参考文档:
http://developer.android.com/tools/publishing/app-signing.html