Android 学习之路 之 签名Android应用程序(七)

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

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

确定发布者的身份。由于应用开发者可以通过使用相同包名来替代已经安装的程序,因此使用签名可以避免发生这种情况。

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

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

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

1,在 Eclipse 中对 Android 应用签名

大部分时候,开发者会直接在 Eclipse 中对 Android 应用签名,在 Eclipse 中对 Android 应用签名的步骤如下。

(1),右击 Android 项目,单击如图 1.36 所示 “Android Tools → Export Signed Application Package...” 菜单项,Eclipse 弹出如图 1.37 所示的窗口。


                             图 1.36 导出签名的 Android 应用程序

(2),如果系统中还没有数字证书,可以在图 1.37 所示窗口中选中 “Create new keystore” 单选按钮,并按图 1.37 所示格式填写数字证书的存储路径和密码。


                      图 1.37 填写数字证书的存储路径和密码

(3),按图 1.37 所示填写完成后单击 “Next” 按钮,Eclipse 将会出现如图 1.38 所示窗口该窗口让用户填写数字证书的详细信息。


                            图 1.38 填写数字证书的详细信息

(4),按图 1.38 所示形式为数字证书填写详细信息后,单击 “Next” 按钮,Eclipse 打开如图 1.39 所示窗口,该窗口用于指定生成签名后的 APK 安装包的存储路径。


                          图 1.39 指定签名后的 APK 安装包的存储路径

(5),单击图 1.39 所示窗口中的 “Finish” 按钮,签名完成。 Eclipse 将会在指定路径下生成一个签名后的 APK 安装包。

上面步骤的第(4)步用于制作新的数字证书,一旦数字证书制作完成,以后就可以直接使用该数字证书签名了。

利用已有的数字证书进行签名,请按如下步骤进行。

(1),在图 1.37 所示窗口中选中 “Use existing keystore”,并使用前面创建的数字证书,如图 1.40 所示。

(2),在图 1.40 所示窗口中选中前面创建的 keystore,并输出创建 keystore 时指定的密码,然后单击 “Next” 按钮,Eclipse 显示如图 1.41 所示的窗口。

(3),在图 1.41 中选择签名创建的别名为 test 的 key,并输出创建该 key 时指定的密码。然后单击该窗口中 “Next” 按钮,Eclipse 将显示图 1.39 所示窗口,用户通过该窗口指定签名后 APK 包的存储路径,最后单击 “Finish” 按钮即可生成签名后 APK 包。


                           图 1.40 使用已有的数字签名


                    图 1.41 选择已有的 key

2,使用命令对 APK 包签名

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

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

(1),创建 keystore 库。JDK 的安装目录下的 bin 子目录下提供了 keytool.ext 工具来生成数字证书。在命令行窗口输入如下命令:

keytool -genkeypair -alias crazyit.keystore -keyalg RSA -validity 400 -keystore crazyit.keystore

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

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

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

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

-validity:指定所生成的数字证书的有效期。

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

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


                               图 1.42 生成数字证书

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

(2),生成未签名的 APK 安装包。在 Eclipse 中右击 Android 项目,单击如图 1.43 所示 “Android Tools → Export Unsigned Application Package...” 菜单项,Eclipse 弹出一个保存文件的对话框,当用户选择存储文件后单击 “Finish” 按钮即可生成一个未签名的 APK 安装包。


                图 1.43 导出未签名的 Android 应用程序

第(2)步作用是生成一个未签名的 APK 安装包,如果本来已有了这个为签名的安装包,或者该安装包是你们委托第三方公司开发的、第三方公司负责提供该未签名的安装包,那么这个步骤是可以省略的。

(3)使用 jarsinger 命令对未签名的 APK 安装包进行签名。JDK 的安装目录下的 bin 之mul下提供了 jarsigner.exe 工具进行签名。在命令行窗口输入如下命令:

jarsigner -verbose -keystore crazyit.keystore -signedjar HelloWorld_crazyit.apk HelloWorld.apk crazyit.keystore

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

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

-keystore:指定数字证书的存储路径。

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

输入上面的命令后按回车键,接下来将会以交互方式让用户输出数字证书 keystore 的密码,如图 1.44 所示。


                                      图 1.44 执行数字签名

(4)使用 zipalign.exe 工具优化 APK 安装包。zipalign.exe 是 Android 自带的一个档案整理工具,它可用于优化 APK 安装包,从而提升 Android 医用与系统之间的交互效率,提升应用程序的运行速度。在命令行窗口输入如下命令:

zipalign -f -v 4 HelloWorld_crazyit.apk

HelloWorld_crazyit_zip.apk

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

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

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

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

HelloWorld_crazyit.apk 和 HelloWorld_crazyit_zip.apk 分别指定整理前的 APK 和 整理后生成的 APK。

运行上面命令,将会在当前目录下生成一个 HelloWorld_crazyit_zip.apk 文件,这就是签名完成且经过优化的 APK 安装包,该安装包可以对外发布了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值