给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
[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 开发之 使用Android系统隐藏api 读取*.apk 程序安装包信息
- gradle 构建不同渠道 APK 包
- 导入jar包之后的Duplicate files copied in APK META-INFO/*
- 让服务器iis支持.apk文件下载的设置方法
- 系统入门(2):Android动态加载jar、apk的实现
- 关于最新APK的瘦身——关于webp与png的区别
- 加载未安装APK中的类
- cocos2dx: 生成apk时程序出现的问题
- Android 错误(The APK file *.apk does not exist on disk Error while Installing APK)解决方法
- apk反编译实践
- 破解APK注入代码大揭秘
- Android——下载apk显示通知提示
- Android开发把项目打包成apk
- 微信二维码扫描下载APK
- Unity之启动外部APK
- Android如何防止apk程序被反编译
- 使用命令行创建并运行android apk
- 解决Androd Studio 安装apk到手机安装不了
- Android apk下载 安装 卸载 打开
- eclipse生成.apk文件安装到手机