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

给APK 文件签名

2014-03-09 22:14 302 查看
来自以下两博客及网络:

[aparche - http://www.cnblogs.com/tianguook/archive/2012/09/27/2705724.html]
[charge_king的博客 - http://blog.163.com/charge_king/blog/static/5192457020114934942343/]
1. 用Eclipse 的导出给apk 签名

Project -> Export -> Export Android Application -> [Create new keystore, input other message] -> finish

注: 第一次给apk 签名时选择 create new keystore; 发布新版本时则选择已有的keystore

2. 命令行下给apk 签名 

先建一个keystore: 

>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore 

用keystore签名:

>jarsigner -verbose
-keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore

签名后用工具zipalign 优化apk

> >zipalign
-v 4 demo_signed.apk final.apk

注:一般工程bin 目录下的apk 文件已被用debug 签名,无法直接在命令行重签名。可先删了签名再重签名,#3 中介绍。

JDK中keytool常用命令

-genkey      在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书

-alias       产生别名

-keystore    指定密钥库的名称(产生的各类信息将不在.keystore文件中

-keyalg      指定密钥的算法   

-validity    指定创建的证书有效期多少天

-keysize     指定密钥长度

-storepass   指定密钥库的密码

-keypass     指定别名条目的密码

-dname       指定证书拥有者信息 例如:  "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"

-list        显示密钥库中的证书信息      keytool -list -v -keystore sage -storepass ....

-v           显示密钥库中的证书详细信息

-export      将别名指定的证书导出到文件  keytool -export -alias caroot -file caroot.crt

-file        参数指定导出到文件的文件名

-delete      删除密钥库中某条目          keytool -delete -alias sage -keystore sage

-keypasswd   修改密钥库中指定条目口令    keytool -keypasswd -alias sage -keypass .... -new .... -storepass ... -keystore sage

-import      将已签名数字证书导入密钥库  keytool -import -alias sage -keystore sagely -file sagely.crt

             导入已签名数字证书用keytool -list -v 以后可以明显发现多了认证链长度,并且把整个CA链全部打印出来。

3. 删除apk 已有签名

1)用压缩工具打开apk 文件删除里面的 META-INF 文件夹 

2)用命令行删除

winrar > rar d demo.apk META-INF 

haozip > HaoZipC d demo.apk META-INF
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android apk