android应⽤签名详细步骤
1、准备⼯作
apk的签名⼯作可以通过两种⽅式来完成:
1)通过ADT提供的图形化界⾯完成apk签名;
右键项⽬——》 Android Tools ——》Export Signed ——》打开图形界⾯
2)完全通过shell/dos命令来完成apk签名
我⽐较喜欢第2)种⽅式,所以下⾯将讲解如何通过命令的⽅式完成apk签名。
给apk签名⼀共要⽤到3个⼯具,或者说3个命令,分别是:keytool、 jarsigner、 zipalign,下⾯是对这3个⼯具的简单介绍:
1)keytool:⽣成数字证书,即密钥,也就是上⾯说到的扩展名为.keystore的那类⽂件;
2)jarsigner:使⽤数字证书给apk⽂件签名;
3)zipalign:对签名后的apk进⾏优化,提⾼与Android系统交互的效率(Android SDK1.6版本开始包含此⼯具)
从这3个⼯具的作⽤也可以看出,这3个⼯具的使⽤顺序。通常我们⾃⼰所开发的所有应⽤程序,都是使⽤同样的签名,即使⽤同⼀个数字证书,这就意味着:如果你是第⼀次做Android应⽤程序签名,上⾯的3个⼯具都将⽤到;但如果你已经有数字证书了,以后再给其它apk签名时,只需要⽤到jarsigner和zipalign就可以完成。
为了⽅便使⽤上⾯3个命令,⾸先需要将上⾯3个⼯具所在路径添加到环境变量path中(我说的是为了⽅便使⽤,没有说必须要这么做)。怎么配置环境变量请参见我先前的博客(Windows 或 Ubuntu),这⾥需要说⼀下这3个⼯具默认所在的路径:
1)keytool:该⼯具位于jdk安装路径的bin⽬录下;
2)jarsigner:该⼯具位于jdk安装路径的bin⽬录下;
3)zipalign:该⼯具位于Android-sdk-windows/tools/⽬录下
不知道⼤家是否注意到keytool和jarsigner两个⼯具是jdk⾃带的,也就意味着⽣成数字证书和⽂件签名不是Android的专利;另外从字⾯上理解jarsigner也能猜得出该⼯具主要是⽤来给jar⽂件签名的。
2、⽣成未经签名的apk⽂件
既然我们要⾃⼰对apk进⾏签名,就不再需要ADT默认帮我们签名了。如何得到⼀个未经签名的apk⽂件呢?打开Eclipse,在Android⼯程名称上点击右键,依次选择“Android Tools” - “Export Unsigned Application Package ...”,然后选择⼀个存储位置保存即可。这样就得到了⼀个未经签名的apk⽂件。
3、使⽤keytool⼯具⽣成数字证书
复制代码代码如下:
keytool -genkey -v -keystore it-homer.keystore -alias it-homer.keystore -keyalg RSA -validity 20000
说明:
1)keytool是⼯具名称,-genkey意味着执⾏的是⽣成数字证书操作,-v表⽰将⽣成证书的详细信息打印出来,显⽰在dos窗⼝中;
2)-keystore  it-homer.keystore 表⽰⽣成的数字证书的⽂件名为“ it-homer.keystore”;
3)-alias  it-homer.keystore 表⽰证书的别名为“ it-homer.keystore”,当然可以不和上⾯的⽂件名⼀样;
4)-keyalg RSA 表⽰⽣成密钥⽂件所采⽤的算法为RSA;
5)-validity 20000 表⽰该数字证书的有效期为20000天,意味着20000天之后该证书将失效
在执⾏上⾯的命令⽣成数字证书⽂件时,会提⽰你输⼊⼀些信息,包括证书的密码,⽰例如下:
4、使⽤jarsigner⼯具为Android应⽤程序签名
复制代码代码如下:
jarsigner -verbose -keystore  it-homer.keystore -signedjar notepad_signed.apk notepad.apk  it-homer.keystore
说明:
1)jarsigner是⼯具名称,-verbose表⽰将签名过程中的详细信息打印出来,显⽰在dos窗⼝中;
2)-keystore  it-homer.keystore 表⽰签名所使⽤的数字证书所在位置,这⾥没有写路径,表⽰在当前⽬录下;
3)-signedjar notepad_signed.apk notepad.apk 表⽰给notepad.apk⽂件签名,签名后的⽂件名称为n
otepad_signed.apk;4)最后⾯的 it-homer.keystore 表⽰证书的别名,对应于⽣成数字证书时-alias参数后⾯的名称
5、使⽤zipalign⼯具优化已签名的apk(⾮必须但建议这么做)
复制代码代码如下:
zipalign -v 4 notepad_signed.apk notepad_signed_aligned.apkandroidsdk安装步骤
说明:
1)zipalign是⼯具名称,-v表⽰在DOS窗⼝打印出详细的优化信息;
2)notepad_signed.apk notepad_signed_aligned.apk 表⽰对已签名⽂件notepad_signed.apk进⾏优化,优化后的⽂件名为notepad_signed_aligned.apk
说明:如果你以前的程序是采⽤默认签名的⽅式(即debug签名),⼀旦换了新的签名应⽤将不能覆盖安装,必须将原先的程序卸载掉,才能安装上。因为程序覆盖安装主要检查两点:
1)两个程序的⼊⼝Activity是否相同。两个程序如果包名不⼀样,即使其它所有代码完全⼀样,也不会被视为同⼀个程序的不同版本;
2)两个程序所采⽤的签名是否相同。如果两个程序所采⽤的签名不同,即使包名相同,也不会被视为同⼀个程序的不同版本,不能覆盖安装。
另外,可能有⼈可能会认为反正debug签名的应⽤程序也能安装使⽤,那也没有必要⾃⼰签名了嘛。千万不要这样想,debug 签名的应⽤程序有这样两个限制,或者说风险:
1)debug签名的应⽤程序不能在Android Market上架销售,它会强制你使⽤⾃⼰的签名;
2)debug.keystore在不同的机器上所⽣成的可能都不⼀样,就意味着如果你换了机器进⾏apk版本升级,那么将会出现上⾯那种程序不能覆盖安装的问题。不要⼩视这个问题,如果你开发的程序只有你⾃⼰使⽤,当然⽆所谓,卸载再安装就可以了。但要是你的软件有很多使⽤客户,这就是⼤问题了,就相当于软件不具备升级功能!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。