您的位置:首页 > 移动开发 > Android开发

android apk 签名

2013-10-15 18:19 375 查看
1.使用公钥和私钥签名

i. 生成公钥

openssl genrsa -3 -out testkey.pem 2048

其中 -3 是算法的参数, 2048 是密钥长度, testkey.pem 是输出的文件

ii. 转成 x509 格式(含作者有效期等)

openssl req -new -x509 -key testkey.pem-out testkey.x509.pem -days 10000 -subj‘/C=US/ST=California/L=MountainView/O=Android/OU=Android/CN=Android/emailAddress=android@android.com’

iii. 生成私钥

openssl pkcs8 -in testkey.pem -topk8-outform DER -out testkey.pk8 -nocrypt

把的格式转换成 PKCS #8 ,这里指定了 -nocryp ,表示不加密,所以签名时不用输入密码

java -jar signapk.jar testkey.x509.pemtestkey.pk8 update.apk update_signed.apk

或者使用keystore

keytool -genkey -alias mic.keystore -keyalgRSA -validity 20000 –keystore mic2.keystore

-alias后跟的是别名这里是mic.keystore

-keyalg是加密方式这里是RSA

-validity是有效期这里是20000天

-keystore就是要生成的keystore的名称,这里是mic2.keystore

然后按回车首先提示输入密码:这个在答名时要用的要记住了哦

然后会确认你的密码

之后会依次叫你输入相关信息如姓名,组织单位等

之后就是输入mic2.keystore主密码(如果和keystore密码相同,按回车)我在这里设和keystore相同,之后你就会在bin目录下找到生成的mic2.store

接下来我们开始为apk文件签名了。

jarsigner -verbose -keystore mic2.keystore-signedjar mic_signed.apk MIC.apk mic 就可以生成签名的apk文件,这里输入文件MIC.apk,最终生成mic_signed.apk为Android签名后的APK执行文件。下面提示输入的密码和keytool输入的一样就行了,

重新签名

删掉META-INF目录下的CERT.SF和CERT.RSA两个文件(修改apk后缀为rar,删掉后再改为rar)

使用当前android系统(android系统可能不同)的platform密钥来重新给apk文件签名。

首先,找到密钥文件,在我的Android源码目录中的位置是"build\target\product\security",下面的platform.pk8和platform.x509.pem两个文件。

然后,用Android提供的SignApk工具来签名。

即使用:java -jar signapk.jar testkey.x509.pem testkey.pk8 update.apkupdate_signed.apk

系统签名和系统权限

如果apk拥有和framework一样的签名(源码下编译使用LOACL_CERTIFICATE:=platform或者拷贝build/target/product/security/下的platform.pk8和platform.x509.pem)

则 安装进去 就拥有system权限

push进去,也有system权限

如果是普通apk,即没有framework签名,则安装进去没有system权限,push进去,拥有system权限

另外,不同手机的framework签名不一样,所以A手机源码下编译的apk,安装在A手机上有system权限,而安装在B手机上则没有System权限,push进去拥有System权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: