01_Android应用开发环境_05_签名android应用程序

时间:2022-11-27 20:06:52

背景:

Android项目以他的包为唯一标识,如果一台设备上安装了两个包名相同的应用,后安装的应用就会覆盖前面安装的应用。

目的:

为了避免覆盖的情况,Android要求对作为成品的应用进行签名。

作用:

  • 确定发布者身份。
  • 确保应用的完整性。
在Eclipse的ADT插件或Ant工具会自动生成调试证书对Android应用签名。如果要正式发布一个Android应用,必须使用合适的数字证书来给应用程序签名,不能使用ADT或者Ant工具生成的调试证书来发布。

在Eclipse中对Android应用签名

1、右击项目,Android Tools→Export Singned Application Package…

2、如果系统中没有数字证书,可以在窗口中选择"Create new keystore"单击按钮,填写数字证书的存储路径和密码。

01_Android应用开发环境_05_签名android应用程序

3、填写完成后Next,Eclipse将会弹出让用户填写数字证书的详细信息。

01_Android应用开发环境_05_签名android应用程序

4、Next,指定生成签名后的APK安装包的存储路径。

01_Android应用开发环境_05_签名android应用程序

5、Finish。这样就会在指定目录下生成一个签名后的APK安装包。

一旦数字证书制作完成,以后就可以最直接使用该证书签名了。

使用命令对APK进行签名

1、创建keysrore库,JDK的安装目录下面的BIN中有一个keytool.exe工具生成数字证书。

keytool -genkeypair    -alias    -keyalg   -validity   -keystore 

  • -genkeypair:指定生成数字证书
  • -alias:指定生成数字证书别名
  • -kayalg:指定生成数字证书的算吗,使用RSA算法
  • -validity:指定生成的数字证书的有效期
  • -keystore:指定所生成的数字证书的存储路径
输入命令后回车,接着安装交互式界面输入相关参数。

2、生成为签名的apk,Android Tools→Export Unsigned Application Package…

3、使用jarsigner命令对未签名的APK进行签名,JDK的Bin子目录下面

jarsigner -verbose -keystore -signedjar

说明:

  • -verbose:指定生成详细输出
  • -keystore:指定数字证书存储路径
  • -singedjar:有三个参数分别是签名后apk包、未签名的APK包、数字证书的别名。
  • 回车,以交互的方式输入数字证书keystore的密码。

4、使用zipalign.exe工具优化APK安装包。

zipalign -f -v 4 a.apk a_zip.apk

  • -f:指定强制覆盖已有文件
  • -v:指定生成详细输出
  • 4:指定档案整理所基于的字节数,通常指定为4,也就是基于32为进行整理。
  • a.apk、a_zip.apk:分别指定整理前的APK和整理后生成的APK。