美文网首页
签名详解(一)

签名详解(一)

作者: whstywh | 来源:发表于2016-12-14 17:02 被阅读0次

1. 引言

  • Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中;
  • 在我们的开发调试中,ADT会自动的使用debug密钥为应用程序签名;
  • debug密钥是一个名为debug.keystore的文件,它的默认位置C:\Users\Administrator.android/debug.keystore;
  • 这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的,Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系;

2. 应用程序签名步骤

  • 完全通过DOS命令来完成apk签名(本文主讲该方式)

  • 通过命令行给apk签名一共要用到3个工具分别是:keytool、jarsigner和zipalign:
    1.keytool:生成数字证书,即密钥,扩展名为.keystore的文件;
    2.jarsigner:使用数字证书给apk文件签名;
    3.zipalign:对签名后的apk进行优化,提高与Android系统交互的效率(Android SDK1.6版本开始包含此工具)

  • 如果你是第一次做Android应用程序签名,上面的3个工具都将用到;但如果你已经有数字证书了,以后再给其它apk签名时,只需要用到jarsigner和zipalign就可以完成。
    为了方便使用上面3个命令,首先需要将上面3个工具所在路径添加到环境变量path中(是为了方便使用,不是必须)。这3个工具默认所在的路径:
    1)keytool:该工具位于jdk安装路径的bin目录下;
    2)jarsigner:该工具位于jdk安装路径的bin目录下;
    3)zipalign:该工具位于android-sdk-windows\tools\目录下
    不知道大家是否注意到keytool和jarsigner两个工具是jdk自带的,也就意味着生成数字证书和文件签名不是Android的专利;

  • 通过ADT提供的图形化界面完成apk签名签名详解(二)

3. 生成未经签名的apk文件

  • Eclipse下,在Android工程名称上点击右键,依次选择"Android Tools" - "Export Unsigned Application Package ...",然后选择一个存储位置保存得到的未经签名的apk文件。
  • Android studio下,打开右侧的 Gardle 窗口 ,展开列表里的三角形 , 双击 assemble 选项,生成的 APK 在: …/YourProject/app/build/outputs/apk/app-debug.apk


    page_1

**4. 使用keytool工具生成数字证书 **

keytool -genkey -v -keystore sign.keystore -alias sign -keyalg RSA -validity 20000
/*      
1) keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来,显示在dos窗口中;     
2)-keystore sign.keystore 表示生成的数字证书的文件名为"sign.keystore";      
3)-alias sign表示证书的别名为"sign",可以和文件名一样;      
4)-keyalg RSA 表示生成密钥文件所采用的算法为RSA;      
5)-validity 20000 表示该数字证书的有效期为20000天,意味着20000天之后该证书将失效在执行上面的命令生成数字证书文件时,会提示你输入一些信息,包括证书的密码。
*/
Paste_2
keytool -list -v -keystore sign.keystore//查看JKS中生成的证书的详细信息
Paste_3

**5. 使用jarsigner工具为Android应用程序签名 **

jarsigner -verbose -keystore sign.keystore -signedjar app-signed.apk app-unsigned sign

*/
1)jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来,显示在dos窗口中;      
2)-keystore sign.keystore 表示签名所使用的数字证书所在位置,此处没有写路径,表示在当前目录下默认:C:\Users\Administrator;      
3)-signedjar app_signed.apk app.apk 表示给notepad.apk文件签名,签名后的文件名称为notepad_signed.apk;      
4)最后面的sign 表示证书的别名,对应于生成数字证书时-alias参数后面的名称
*/

6. 使用zipalign工具优化已签名的apk(非必须但建议这么做)

      zipalign -v 4 app-signed.apk app_signed_aligned.apk
/*      
1)zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;      
2)app-signed.apk app_signed_aligned.apk 表示对已签名文件app-signed.apk进行优化,优化后的文件名为app_signed_aligned.apk
*/
  • 至此就完成了通过DOS命令来对apk进行签名

感谢:博客园的阿拉丁

相关文章

  • 签名详解(一)

    1. 引言 Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中; 在我们的开发...

  • iOS签名机制

    应用签名的原理iOS APP签名机制详解iOS逆向之旅(基础篇) — App的签名机制【Xcode是如何将App安...

  • 签名详解(二)

    签名详解(一)中主讲了Dos命令进行签名,本文主讲通过ADT提供的图形化界面完成apk签名的方式; 首先在Andr...

  • 整理的一些RN与ios相关第三方控件

    iOS 各种证书/签名详解 https://blog.csdn.net/smaller_coder/article...

  • iOS "this certificate has a

    证书详解iOS签名与证书 2016.2.14 苹果的WWDRCA 证书过期 导致无法提交AppStore并且显示 ...

  • iOS数字签名、代码签名、双重签名详解

    经常听到关于iOS的一些签名,什么数字签名,代码签名,双重签名等,那这些签名都是代表什么意思啦?我们在这里具体的说...

  • APP签名原理详解

    一、前言 Android 签名。 在说道Android签名之前,我们需要了解的几个知识点 1、数据摘要(数据指纹)...

  • Android签名过程详解

    1、本文主要内容 基础知识 手动签名apk 签名工具源码解析 总结 为了保证apk的安全性,必须对apk进行签名。...

  • Android apk签名详解——AS签名、获取签名信息、系统签

    Apk签名,每一个Android开发者都不陌生。它就是对我们的apk加了一个校验参数,防止apk被掉包。一开始做A...

  • TypeScript

    可索引类型具有一个 索引签名,它描述了对象索引的类型,还有相应的索引返回值类型。 TS 版 Promise 详解

网友评论

      本文标题:签名详解(一)

      本文链接:https://www.haomeiwen.com/subject/whvimttx.html