安卓应用程序的签名

签名安卓应用程序



Android应用以它的包名作为唯一标识。如果在同一部手机上安装两个包名相同的应用,后面安装的应用就会覆盖前面安装的应用。为了避免这种情况的发生,Android要求对作为产品发布的应用进行签名。


签名主要有如下两个作用:

1.确定发布者的身份。由于应用开发者可以通过使用相同包名来替换已经安装的程序,因此使用签名可以避免发生这种情况,也就是避免别人通过发布相同包名的程序来替换掉你发布的程序。

2.确保应用的完整性。签名会对应用包中的每个文件进行处理,从而确保程序包中的文件不会被替换。

通过上面的介绍不难看出,Android应用签名的作用类似于现实生活中的签名。当开发者对Android应用签名时,相当于告诉外界:该应用程序是由“我”开发的,“我”会对该应用程序负责----因为有签名(签名有密钥),别人无法冒名顶替“我”;与此同时,“我”也无法冒名顶替别人。


注意:在应用的开发、调试阶段,EclipseADT插件或Ant工具会自动生成调试证书对Android应用签名,因此部署、调试过程并没有经过签名。需要指出的是,如果要正式发布一个Android应用,必须使用合适的数字证书来给应用程序签名,不能使用ADT插件或Ant工具生成的调试证书来发布。



Eclipse中对安卓应用签名



开发的过程中我们大多数时候都会直接在Eclipse中对Android应用签名,在Eclipse中对Android应用签名的步骤如下:

1.右键点击Android项目,在下拉菜单中选择“Android Tools---->Export Signed Application Package...”,操作如下:



点击之后会弹出一个提示框,显示如下:



选择要导出的工程,因为是在要导出的工程上点的鼠标右键,所以默认就是要导出的工程,所以这一步不需要什么操作,直接点Next >”,显示如下:



2.选中Create new keystore”单选按钮,按照格式填写数字证书的存储路径和密码。操作显示如下:



3.按照上述格式填写完成后点击Next >”,Eclipse会弹出如下提示框:


按照上图所示填写数字证书的详细信息。


4.填写完毕之后点击Next >”,显示如下:


该窗口用于指定生成签名后的APK安装包的存储路径。


5.点击Finish”,完成签名。Eclipse会在指定路径下生成一个签名后的APK安装包。


上面的步骤制作了新的数字证书,一旦数字证书制作完成,以后就可以直接使用该数字证书签名了。利用已有的数字证书进行签名,请按照如下步骤进行:


1.在需要签名的工程上点击鼠标右键,默认工程不需要修改,直接点下一步,直到出现如下截图:



点击Browse...”,选择刚刚生成的数字签名,操作显示如下:


选中之后,输入该数字签名对应的密码。


2.上述内容输入之后,点击Next >”,显示如下:


选择制作该数字签名时创建的别名为keyzz”(我创建的是这个别名,大家根据自己创建的别名进行选择)的key,并输入创建该key时指定的密码。


3.上述操作完成之后,点击Next >”,显示如下:


选择签名后APK包的存储路径,上面黄色叹号提示的英文“Destination file already exists”意思是目标文件已经存在,这个不用管,直接覆盖之前的文件即可,如果不想覆盖,就点“Browse...”,重新选择一个存储路径。


4.选择完之后,点Finish”按钮即可生成签名后的APK包。



使用命令对安卓应用签名



如果不想借助于Eclipse提供的方式对Android应用程序签名,或在某些场合下,需要对一个“未签名”的APK包进行签名,则可通过“命令”来对Android应用进行手动签名。


使用命令对Android应用签名的步骤如下:

1.创建keystore库。JDK的安装目录下的bin子目录下提供了keytool.exe工具来生成数字证书。点击“开始”--->“运行”,然后输入“cmd”,在弹出的命令行界面用cd命令切换到你安装的jdk的目录里(如果你已经添加到环境变量里面了,那也可以不用切换到jdk的目录下),我的是“C:\Program Files\Java\jdk1.6.0_22\bin”,在命令行窗口输入如下命令:


keytool -genkeypair -alias zzfeng.keystore -keyalg RSA -validity 1000 -keystore zzfeng.keystore


上面命令中各选项说明如下:

-genkeypair:指定生成数字证书。

-alias:指定生成数字证书的别名。

-keyalg:指定生成数字证书的算法。使用RSA算法。

-validity:指定生成的数字证书的有效期(单位是天)。

-keystore:指定所生成的数字证书的存储路径


输入上述命令后按回车键,接下来将会以交互式方式让用户输入数字证书keystore的密码、作者、公司等详细信息,操作如下图所示:


注意:该步骤的作用是生成属于你们公司、你的数字证书,这个步骤只要做一次即可。一旦数字证书创建成功之后,只要在该证书有效期内,可以一直重复使用该证书。


2.生成未签名的APK安装包。在Eclipse中鼠标右键点击Android项目,在下拉菜单中选择“Android Tools---->Export Unsigned Application Package...”,Eclipse会弹出一个保存文件的对话框,当我们选择好存储文件的位置和文件名后单击“保存”(有的版本是“Finish”)按钮即可生成一个未签名的APK安装包。操作显示如下:





3.使用jarsigner”命令对未签名的APK安装包进行签名。在步骤1中到的目录下有“jarsigner.exe”工具,可以用来进行签名。命令行窗口输入如下命令:


jarsigner -verbose -keystore zzfeng.keystore -signedjar BleDevManager-signed.apk BleDevManager.apk zzfeng.keystore


上面的命令中各选项的说明如下:

-verbose:指定生成详细的输出。

-keystore:指定数字证书的存储路径(上述命令直接用的数字证书名是因为数字证书就在当前目录下,如果是其他目录,需要在数字证书名前加相应的路径)。

-signedjar:该选项的三个参数分别为签名后的APK包、未签名的APK包和数字证书的别名。


注意上述的命令中路径和文件名等一定要跟自己的对应,因为你设置的路径和文件名有可能跟我的不一样,大家根据自己设置的对应修改一下即可。

输入上述命令之后按回车键,接下来将会以交互式方式让用户输入数字证书keystore的密码,操作显示如下:


签名完成。


4.使用zipalign.exe”工具优化APK安装包。“zipalign.exe”是Android自带的一个档案整理工具,它可用于优化APK安装包,从而提升Android应用与系统之间的交互效率,提升应用程序的运行速度。该工具存在于SDK tools下,我的路径是“E:\adt-bundle-windows-x86-20130917\sdk\build-tools\19.1.0”,如果找不到,可以在sdk目录下搜索一下。如果存在的路径没有设置到环境变量里面去,那我们就在命令行中用cd命令切换到上述路径中,并将刚签过名的需要优化的APK安装包也复制到该路径下,然后在命令行窗口输入如下命令:


zipalign -f -v 4 BleDevManager-signed.apk BleDevManager-signed-zip.apk


上面的命令中各选项说明如下:

-f:指定强制覆盖已有的文件。

-v:指定生成详细输出。

4:指定档案整理所基于的字节数,通常指定为4,也就是基于32位进行整理。

BleDevManager-signed.apkBleDevManager-signed-zip.apk分别指定整理前的APK和整理后生成的APK


运行上述命令,将会在当前目录下生成一个BleDevManager-signed-zip.apk”文件,这就是签名完成且经过优化的APK安装包,该安装包可以对外发布了。操作显示如下:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值