如果不想借助于Eclipse提供的方式对Android应用程序签名,或许在某些场合下,需要对一个“未签名”的APK包进行签名,则可通过“命令”来对Android应用程序进行手动签名。
使用命令对Android应用签名的步骤如下。
1.创建keystore库,JDK的安装目录下的bin子目录下提供了keytool.exe工具来生成数字证书。在命令行窗口输入如下命令:
keytool -genkeypair -alias signature.keystore -keyaly RSA -validity 400 -keystore signature.keystore
上面命令中各选项说明如下。
-genkeypair:指定生成数字证书
-alias:指定生成数字证书的别名
-keyalg:指定生成数字证书的算法,使用RSA算法
-validity:指定生成的数字证书的有效期
-keystore:指定所生成的数字证书的储存路径
输入上面的命令后按回车,会出现以交互方式让用户输入数字证书keystore的密码/作者/公司等详细信息。
备注:这一步时生成属于你们公司/你的数字证书,这一步只需要做一次即可。一旦数字证书创建成功之后,只要在该证书有效期内,可以一直重复使用该证书。
2.生成未签名的APK安装包。在Eclipse中右击Android项目,在弹出的菜单中找到“Android Tools -->Export Unsigned Application Package...“菜单项,Eclipse弹出一个保存文件的对话框,当用户选择储存文件后单击”Finish”按钮即可生成一个未签名的APK安装包。
备注:这一步是生成一个未签名的APK按转包,如果已经有未签名的安装包,那么该步骤可以跳过
3.使用jarsigner命令对未签名的APK安装包进行签名。JDK的安装目录下的bin子目录下提供了jarsigner.exe工具进行签名。在命令行窗口输入如下命令:
jarsigner -verbose -keystore signature.keystore -signedjar HelloWorld_test.apk HelloWorld.apk signature.keystore
上面命令中各选项说明如下。
-verbose:指定生成详细输出
-keystore:指定数字证书的储存路径
-signedjar:该选项的三个参数分别未签名后的APK包/未签名的APK包/数字证书的别名
输入上面命令后按回车健,将会以交互的方式让用户输入数字证书keystore的密码
4.使用zipalign.exe工具优化APK安装包。zipalign.exe是Android自带的一个档案整理工具,它可用于优化APK安装包,从而提升Android应用与系统之间的交互效率,提升应用程序的运行速度。
在命令行窗口输入如下命令
zipalign -f -v 4 HelloWorld_Test.apk HelloWorld_Test_zip.apk
上面的命令中各选项说明如下
-f:指定强制覆盖已有的文件
-v:指定生成详细输出
4:指定档案整理所基于的字节数,通常指定为4,也就是基于32位进行整理
HelloWord_Test.apk和HelloWord_Test_zip.apk分别指定整理前的APK和整理后生成的APK
运行上面命令,将会在当前目录下生成一个HelloWorld_Test_zip.apk文件,这就是签名完成且经过优化的APK安装包,该安装包可以对外发布了。