怎么给Android应用程序签名

移动开发 Android
Android程序的签名和Symbian类似都可以自签名(Self-signed),但是在Android平台中证书初期还显得形同虚设,平时开发时通过ADB接口上传的程序会自动被签有Debug权限的程序。

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文件,示例如下:

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

pause<

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

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

【编辑推荐】

Android程序的签名

Android木马:安全是自由的代价

提高Android用户体验三部曲之速度快

安全需知:Android木马应用程序大名单

责任编辑:zhaolei 来源: 网络转载
相关推荐

2011-11-03 09:41:35

Android签名安全性

2011-11-03 09:24:57

李洋签名

2010-01-25 13:29:53

Android本地应用

2012-08-08 17:41:49

防火墙防火墙规则应用程序签名

2009-06-10 11:47:32

Android应用程序模块

2011-05-10 13:56:27

Android应用程序Android MarAndroid

2010-02-05 18:21:24

Android应用程序

2010-02-04 10:17:38

Android应用程序

2010-02-07 10:25:11

Android

2010-03-02 14:24:00

Android应用程序

2017-03-02 11:10:39

AndroidMVVM应用程序

2011-04-19 09:19:55

应用程序项目管理

2011-08-02 18:30:32

iOS 应用程序 属性

2022-09-27 15:16:42

开发Android应用程序

2021-12-06 07:47:36

Linux 驱动程序Linux 系统

2010-02-06 15:26:11

Android应用程序

2010-02-07 10:21:27

Android应用程序

2012-04-25 22:56:10

Android

2015-10-10 16:31:58

2011-03-25 15:45:08

点赞
收藏

51CTO技术栈公众号