Android应用程序的签名

本文详细介绍了如何使用ADT图形界面和DOS命令为Android应用程序签名,包括keytool生成数字证书,jarsigner进行apk签名,以及zipalign对签名后的apk进行优化,确保与Android系统的高效交互。此外,还强调了签名的重要性,即使程序入口Activity和包名不同,但签名相同会被视为同一程序的不同版本。
摘要由CSDN通过智能技术生成
一般情况下,我们在模拟器上调试app时,虽然我们并没有主观的进行签名操作,但是ADT会自动的使用debug密钥为app签名【Android系统要求每一个Android应用程序必须经过数字签名才能够安装到系统中】,debug密钥本质是一个名为debug.keystore的文件,存在于计算机:C:\Users\i\.android\debug.keystore

签名方式:
  1. 通过ADT提供的图形化界面完成apk签名
  2. 通过DOS命令来完成apk签名

签名步骤:(以方式2为例)
  • 步骤一:配置以下三个工具的path环境
    1. 一共需要用到三个命令,分别是:keytool、jarsigner、zipalign
    2. keytool:生成数字证书,即密钥,即后缀为.keystore的文件(D:\Program Files\Java\jdk1.8.0_11\bin)
    3. jarsigner:使用数字证书给apk文件签名(D:\Program Files\Java\jdk1.8.0_11\bin)
    4. zipalign:对签名后的apk进行优化,提高与Android系统交互的效率
:若已经有数字签名了,那么在之后的签名中,只需要用到后两个命令,否则三个都需要

  • 步骤二:生成未经签名的apk包
  • 步骤三:使用keytool工具生成数字证书:
keytool -genkey -v -keystore caoting.keystore -alias marry.keystore -keyalg RSA -validity 20000
  • keytool:工具名
  • -genkey:生成数字证书操作
  • -v:将生成证书的详细信息打印出来,显示在dos窗口中
  • -keystore caoting.keystore:生成的数字证书的文件名为“caoting.keystore”
  • -alias marry.keystore:证书的别名为“-alias marry.keystore”
  • -keyalg RSA:生成密钥文件所采用的算法是RSA
  • -validity 20000:该数字证书的有效期,即为20000天
  • 步骤四:使用jarsigner为apk签名
jarsigner -verbose -keystore caoting.keystore -signedjar destination.apk source.apk marry.keystore
  • jarsigner :工具名
  • -verbose:将签名过程中的详细信息打印出来
  • -keystore caoting.keystore:表示签名所使用的数字证书所在的位置(这里没写路径,表示在当前目录下)
  • -signedjar destination.apk source.apk:表示给source.apk文件签名,且签名后的文件为destination.apk
  • marry.keystore:证书的别名
  • 步骤五:使用zipalign工具优化已签名的apk
zipalign -v destination.apk destination_aligned.apk
  • zipalign :工具名
  •  -v:打印
  • destination.apk destination_aligned.apk:将签名的文件优化,优化后的文件为destination_aligned.apk
:若之前的程序是以默认签名方式(即debug签名),一旦采用了新的签名,应用将不能覆盖安装,必须将原先的程序卸载掉,才能安装上

覆盖安装主要检查两点:
  1. 两个程序的入口Activity是否相同,两个程序的包名不一样,即时其他代码一样,也不会被视为同一个程序的不同版本
  2. 两个程序采用的签名是否相同(debug.keystore在不同的机器上,所生成的可能不一样)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值