Android APK如何签名
Android项目以它的包名作为唯一标识,如果在同一设备上安装两个相同的应用,后面安装的应用就会覆盖前面安装的应用。为了避免这种情况的发生,我们需要对作为产品发布的应用进行签名。
签名其实有两个作用:
(1) 确定发布者的身份。防止别人用相同包名来替换你已安装的程序。
(2) 确保应用的完整性。签名会对应用包中的每个文件进行处理,以确保程序包中的文件不会被替换。
在应用的开发和调试阶段,Eclipse的ADT插件或ANT工具会自动生成调试证书,对Android应用签名。但是,如果要正式发布一个Android应用的话,就必须使用合适的数字证书来给应用程序签名,不能使用ADT插件或ANT工具生成的调试证书来发布。
这有又两种方式对Android应用签名:
1.在Eclipse中对Android应用签名
(1) 右击Android项目,Android Tools-->Export Signed Application Package...
(2) 如果系统还没有数字证书,可以选择"Create new keystore",按如图格式填写数字证书的存储路径和密码。
(3) 填写数字证书的详细信息。
(4)指定生成签名后的APK安装包的存储路径。
签名证书制作完后,以后就可以直接使用该数字证书签名了。
(1)选择前面创建的keystore,输入创建keystore时的指定密码。
(2)选择前面创建时的别名yq的key,并输入创建该key时指定的密码,生成签名后的apk包。
2.使用命令对APK包签名
在某些场合下, 我们可能需要对一个“未签名”的APK包进行签名,则可通过“命令”来对Android应用进行手动签名。
(1) 创建keystore库。JDK的安装目录下的bin子目录下提供了keytool.exe来生成数字证书。
在命令窗口输入:
keytool -genkeypair -alias yqkey.keystore -keyalg RSA -validity 100 -keystore yqkey.keystore
说明:
-genkeypair:指定生成数字证书。
-alias:指定生成数字证书的别名。
-keyalg:指定生成数字证书的算法。使用RSA算法。
-validity:指定生成的数字证书的有效期。
-keystore:指定所生成的数字证书的存储路径。
回车后,接下来将会以交互的方式让我们输入数字证书keystore的密码、作者、公司等详细信息。
该步骤只要做一次即可,一旦数字证书创建成功后,只要在该证书的有效期内,可以移植重复使用该证书。
(2) 生成未签名的APK安装包。在Eclipse中右击Android项目,Android Tools-->Export Unsigned Application Package...
(3) 使用jarsigner命令对未签名的APK安装包进行签名。JDK的安装目录下的bin子目录下提供了jarsigner.exe工具进行签名。在命令窗口输入:
jarsigner -verbose -keystore crazyit.keystore -signedjar Demo_yqkey.apk Demo.apk yqkey.keystore
说明:
-verbose:指定生成详细输出。
-keystore:指定数字证书的存储路径。
-signedjar:该选项的三个参数分别分签名的APK包、未签名的APK包、数字证书别名。
回车后,接下来将会以交互的方式让我们输入数字证书keystore的密码。
(4) 使用zipalign.exe工具优化APK安装包。zipalign.exe是Android自带的一个档案整理工具,它可用于优化APK安装包,从而提升Android应用与系统之间的交互效率,提升应用程序的运行速度。在命令行窗口输入:
zipalign -f -v 4 Demo_yqkey.apk
Demo_yqkey_zip.apk
说明:
-f:指定强制覆盖已有文件。
-v:指定生成详细输出。
4:指定档案整理所基于的字节数,通常指定为4,也就是基于32位进行整理。
Demo_yqkey.apk和Demo_yqkey_zip.apk,分别制定整理前的APK和整理后生成的APK。
生成的Demo_yqkey_zip.apk文件,就是签名完成且经过优化的APK安装包,该安装包可以对外发布了。
Android APK如何签名的更多相关文章
- Visual Studio 2017为Android APK包签名
Visual Studio 2017为Android APK包签名 为Android APK包签名,可以保证后期的App顺利升级.在Visual Studio 2015中,IDE会自动生成两个AP ...
- android apk的签名和权限问题
一. android apk的签名问题(http://blog.csdn.net/lyq8479/article/details/6401093) 1.为什么要给Android应用程序签名? ...
- 读取Android APK文件签名的方法
在微信开放平台等申请API key 和secret时经常要用到apk文件签名,那么如何读取呢? 下面贴一下相关读取源码: 一共两个文件MainActivity和MD5, package com.lcg ...
- Android APK 重签名
对APK 进行在线 加固后,Apk体积一般会变大,而且Apk会无法直接安装,因为缺少了你的签名.是的,你需要对这个Apk进行重签名. 如何重签名 重签名的方法,一般来说,有两种,第一种是用JDK自带的 ...
- Android APK 手动签名
首先,如果没有签名密钥,先生成密钥: keytool -genkey -alias android.keystore -keyalg RSA -validity 20000 -keystore and ...
- android apk jarsigner 签名打包
cmd 命令符打包: 规则: jarsigner -verbose -keystore 签名路径 -signedjar 签名后的apk存放路径 未签名的apk 签名文件的别名 项目如我的项目是: ...
- android apk重新[签名]
1,删除之前的签名文件 用解压缩工具打开,删除 [META-INF] 文件夹 2,打开命令行窗口 3,[保证签名文件和apk在同一级目录下] 然后执行如下命令,将 (xx) 处替换自己的签名.apk ...
- 【Android Apk重新签名报错re-sign.jar之解决方法】
故障现象:
- apk重签名方法
转载(http://www.51testing.com/?uid-115892-action-viewspace-itemid-223023) 1. 生成Android APK包签名证书 1 ...
随机推荐
- 【转】stopPropagation, preventDefault 和 return false 的区别
因为有父, 子节点同在, 因为有监听事件和浏览器默认动作之分. 使用 JavaScript 时为了达到预期效果经常需要阻止事件和动作执行. 一般我们会用到三种方法, 分别是 stopPropagat ...
- python 之 Django 基础篇
1,Django流程介绍 MTV模式 著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层:他们之间以一种插件似的,松耦合的方式连接在一起. 模型负责业务对象与数据 ...
- *HDU3398 数学
String Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 关于IOS浏览器:document,body的click事件触发规则
今天做了个手机页面,点击某个按钮->弹出菜单,再点击菜单以外的任意位置->关闭菜单,在其他浏览器里面没有问题,但是在IOS浏览器中并不会关闭. 网上解决这个bug的帖子很多,这篇帖子主要是 ...
- Hibernate多对多双向关联的配置
Hibernate的双向多对多关联有两种配置方法:那我们就来看看两种方案是如何配置的. 一.创建以各自类为类型的集合来关联 1.首先我们要在两个实体类(雇员<Emploee>.工程< ...
- JQuery的父、子、兄弟节点查找方法
jQuery.parent(expr) //找父元素 jQuery.parents(expr) //找到所有祖先元素,不限于父元素 jQuery.children ...
- [CSS]textarea设置下划线格式
功能要求:1:如何实现在多行文本框textarea里面每一行下面都有一条横线 2:textarea文本框里面有一段不能删掉 实现方法:横线用背景图片来做,不动的文字用浮动层+给textarea增加t ...
- NSTimer整理总结
对于定时器NSTimer,我们大家都不会陌生,在使用的时候,我们常常会遇到一些坑,例如:在Scrollview拖动时,timer会暂停:在子线程中如何创建一个定时器等.针对于一些我们所遇到的坑,我来总 ...
- DBImport v3.44 中文版发布:数据库数据互导及文档生成工具(IT人员必备)
前言: 距离上一个版本V3.3版本的文章发布,已经是1年10个月前的事了. 其实版本一直在更新,但也没什么大的功能更新,总体比较稳定,所以也不怎么写文介绍了. 至于工作上的事,之前有半年时间跑去学英语 ...
- 简单明了区分escape、encodeURI和encodeURIComponent
一.前言 讲这3个方法区别的文章太多了,但是大部分写的都很绕.本文试图从实践角度去讲这3个方法. 二.escape和它们不是同一类 简单来说,escape是对字符串(string)进行编码(而另外两种 ...