要想使Android应用程序在真机上运行,需要对apk(Android 应用程序的执行文件,相当于Symbian 程序的sis/sisx 或 Java ME 程序的 jar 文件)文件进行签名,可以通过命令行或ADT插件方式对apk文件进行签名.
一 首先介绍使用命令行方式进行签名,使用命令行方式进行签名需要JDK中的两个命令行工具,keytool.exe 和 jarsigner.exe.
可按如下两步对 apk 文件进行签名:
(1) 使用keytool 生成专用密钥 (Private Key)文件
(2) 使用jarsigner 根据keytool 生成的专用密钥对apk文件进行签名。
生成专用密钥的命令如下:
keytool -genkey -v -keystore androidguy -release.keystore -alias androidguy -keyalg RSA -validity 30000
其中 androidgu-release.keystore 表示要生成的密钥文件名,可以是任意合法的文件名. android表示密钥的别名,后面对 apk 文件签名时需要用到。RSA 表示密钥算法,30000表示签名的有效天数。
在执行上面的命令后,需要输入一系列的信息。这些信息可以任意输入,但一般需要输入一些有意义的信息。下面是作者输入的信息:
在输入完上面的信息后,在当前目录下会生成一个androidguy-release.keystore 文件,这个就是专用密钥文件
紧接着使用 jarsigner 命令对apk文件进行签名,首先找到要签名的apk文件,运行命令行进入该目录,将刚生成的androidguy-release.keystore 文件复制到该目录中,最后执行以下命令: jarsigner -verbose -keystore androidguy -release.keystore iTracks_work.apk androidguy
其中 androidguy 表示使用keytool命令keytool 命令指定的专用密钥文件的别名, 必须指定.在执行上面的命令后,需要输入使用keytool 命令设置的 keystore 密码和 的主密码.如果这两个密码相同,在输入第2个密三时只需按回车键即可(需要注意的是,输入的密码是不回显的)。如果密码输入正确,jarsigner命令会成功对 apk文件进行签名。签名完成后,apk文件会比未签名时大了一些.
二 使用ADT插件方式进行签名
在Eclipse 环境可以直接对 apk文件进行签名,在工程右键菜单中单击[Android Tools] > [Export Signed Application Package...] 菜单项,打开[Export Android Application]对话框,并
在第一页输入要导出的工程名,选择后进入下一步,进入输入密钥文件的路径([Location] 文本框)和密码, 注意:我这里是使用了已存在的密钥文件,如下面两个图:
接下来设置密钥别名等签名信息和要生成的apk文件名,如图
在完成上面的设置后,单击 [Finish] 按钮生成被签名的 apk 文件,查看生成的文件后会发现,除了生成iTrack_work3.apk文件外,还生成了一个private_keys 文件,这个文件就是密钥文件.下次再签名时可以直接选择该文件.