android 应用签名

来源:互联网 发布:sheme数据库方案例子 编辑:程序博客网 时间:2024/04/28 03:41
Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序。不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。

  ·所有的程序都必须签名,没有被签名的程序,系统将不能安装。

  ·可使用自签署证书签署应用程序,无须授权凭证。

  ·系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。

  ·可以使用标准工具-Keytool and Jarsigner-生成密钥,来签名应用程序的.apk文件。

  Android SDK 工具可以在调试时给应用程序签名。ADT插件和Ant编译工具都提供了两种签名模式-debug模式和release模式

  ·debug模式下,编译工具使用JDK中的通用程序Keytool通过已知方法和密码创建秘锁和密钥。每次编译的时候,工具使用debug密钥签名应用程序的.apk文件。因为密码是已知的,工具不需要在每次编译的时候提示输入密锁和密钥。

  ·当应用程序调试完毕准备要发布release版本时,可以在release模式下编译。release模式下,编译工具不会将.apk文件签名。需要自己用Keytool生成密钥和密锁,再用JDK中的Jarsigner工具给.apk文件签名。

  签名基本设置

  首先设置JAVA_HOME环境变量,告诉SDK如何找到Keytool,或者可以在Windows 系统环境变量PATH变量中添加Keytool的JDK路径。

  在发布release版本时,从Package面版上按选中你的project,按鼠标右键,依次选择Android Tools、Export Application Package。或者可以点击Manifest Editor,overview 页面上的“Exporting the unsigned .apk”连接 ,导出未签名apk文件。保存.apk文件后,用Jarsigner及自己的密钥给apk文件签名,如果没有密钥, 可以用Keystore创建密钥和密锁。如果已经有一个密钥了,如公共密钥,就可以给.apk文件签名了。

  也可以把上面这个完整的步骤写成一个bat文件,这样需要签名的时候只要运行这个bat就可以了。下面给出一个完整的bat文件示例:

  @Rem android签名程序 //注释指令

  @Rem echo是显示指令 格式:echo [{on|off}] [message]

  @echo **********************************************************

  @Rem 文件是否存在命令格式:if exist 路径+文件名 命令

  @if exist d:sign/MyFirstApp.keystore goto sign

  @echo 创建签名文件MyFirstApp.keystore

  @Rem keytool命令格式:-genkey产生签名 -alias别名 -keyalg加密算法 -validity有效天数 -keystore生产签名文件名称

  keytool -genkey -alias MyFirstApp.keystore -keyalg RSA -validity 40000 -keystore MyFirstApp.keystore

  @echo 开始签名:

  @Rem jarsigner命令格式:-verbose输出详细信息 -keystore密钥库位置 -signedjar要生成的文件 要签名的文件 密钥库文件

  jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore

  @goto over

  :sign

  @echo 开始签名:

  jarsigner -verbose -keystore MyFirstApp.keystore -signedjar MyFirstApp_signed.apk MyFirstApp.apk MyFirstApp.keystore

  :over

  @echo ********************MyFirstApp.apk 签名完成************************

  pause

  ================

  以上是一个给应用签名的完整bat文件,在运行这个bat文件时,还需要按照屏幕提示的步骤输入一些必要信息,最后生成一个签名后的文件是:MyFirstApp_signed.apk。

  签名完成以后最好再把这个文件压缩一下,使用Android SDK安装路径下tools文件夹里的zipalign进行压缩,以刚才这个文件为例,也可以写成一个bat文件,示例如下:

  D:\soft\android-sdk-windows\tools\zipalign -f -v 4 MyFirstApp_signed.apk MyFirstApp_zip.apk

  D:\soft\android-sdk-windows\tools\zipalign -c -v 4 MyFirstApp_zip.apk

  pause

  ================

  上面的D:\soft\android-sdk-windows用你的实际Android SDK安装路径代替。

  按照以上步骤签名、压缩就完成了,最后把压缩后的那个文件(比如例子中的MyFirstApp_zip.apk文件)复制到手机上就可以正常的安装运行了。


原创粉丝点击