本文共 2566 字,大约阅读时间需要 8 分钟。
1、什么是签名? 如果这个问题不是放在开发中来问,如果是放在一个普通的版块,我想大家都知道签名的含义。可往往就是将一些生活中常用的术语放在计算机这种专业领域,大家就开始迷惑了。计算机所做的事情,或者说编程语言所做的事情,不正是在尽可能地模拟现实吗?所以,计算机中所说的签名和生活中所说的签名在本质上是一样的,它所起到的作用也是一致的!
2、为什么要给应用程序签名? 如果只能用一句简单的话语来回答这个问题的话,我会说:“这是系统所要求的”。
系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。3、为什么我开发的应用程序没有做什么签名也能在模拟器和手机上运行? 你没有给应用程序签名并不代表Android应用程序没有被签名。为了方便我们开发调试程序,ADT会自动的使用debug密钥为应用程序签名。debug密钥?它在哪?debug密钥是一个名为debug.keystore的文件,它的位置:
系统盘符:/Documents and Settings/liufeng/./debug.keystore “liufeng”对应于你自己的windows操作系统用户名,怎么样,是不是已经找到它了。这也就意味着,如果我们想拥有自己的签名,而不是让ADT帮我们签名的话,我们也要有一个属于自己的密钥文件(*.keystore)。4、应用程序签名步骤
1)准备工作 apk的签名工作可以通过两种方式来完成: 1)通过ADT提供的图形化界面完成apk签名; 2)完全通过DOS命令来完成apk签名我比较喜欢第2)种方式,所以下面将讲解如何通过命令的方式完成apk签名。 给apk签名一共要用到3个工具,或者说3个命令,分别是:keytool、jarsigner和zipalign,下面是对这3个工具的简单介绍: 1)keytool:生成数字证书,即密钥,也就是上面说到的扩展名为.keystore的那类文件; 2)jarsigner:使用数字证书给apk文件签名; 3)zipalign:对签名后的apk进行优化,提高与系统交互的效率(Android SDK1.6版本开始包含此工具) 从这3个工具的作用也可以看出,这3个工具的使用顺序。通常我们自己所开发的所有应用程序,都是使用同样的签名,即使用同一个数字证书,这就意味着:如果你是第一次做应用程序签名,上面的3个工具都将用到;但如果你已经有数字证书了,以后再给其它apk签名时,只需要用到jarsigner和zipalign就可以完成。 为了方便使用上面3个命令,首先需要将上面3个工具所在路径添加到环境变量path中(我说的是为了方便使用,没有说必须要这么做)。怎么配置环境变量就不在此讲解了,这里需要说一下这3个工具默认所在的路径: 1)keytool:该工具位于jdk安装路径的bin目录下; 2)jarsigner:该工具位于jdk安装路径的bin目录下; 3)zipalign:该工具位于-sdk-windows/tools/(实际操作中,是目录:生成未经签名的apk文件遇到了问题,参考文章:
3)使用keytool工具生成数字证书
先介绍cmd下的两个命令:
跳转到目录C:\Program Files\Java\jdk1.8.0_45\bin:
> cd C:\Program Files\Java\jdk1.8.0_45\bin
查看目录下内容
> dir
使用keytool工具生成数字证书
> keytool -genkey -v -keystore liufeng.keystore -alias liufeng.keystore -keyalg RSA -validity 20000在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码,示例如下:
完成上述操作后,在 keytool 所在的目录下会生成xxx.keystore 的数字证书。
转载地址:http://tbjaa.baihongyu.com/