android签名

来源:互联网 发布:mac pro 15寸 尺寸 编辑:程序博客网 时间:2024/04/29 17:34

一、为什么要签名

最简单直接的回答:系统要求的。

Android系统要求所有的程序经过数字签名才能安装,如果没有可用的数字签名,系统将不许安装运行此程序。不管是模拟器还是真实手机。因此,在设备或者是模拟器上运行调试程序之前,必须为应用程序设置数字签名。

       Android签名的数字证书不需要权威机构来认证,是开发者自己产生的数字证书,即所谓的自签名。数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,而不是用来决定最终用户可以安装哪些应用程序。

       系统仅仅会在安装的时候测试签名证书的有效期,如果应用程序的签名是在安装之后才到期,那么应用程序仍然可以正常启用。

       (1)签名这时候就是起区分作用的,只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!

       (2)签名能够标示应用程序,由于开发商可能通过使用相同的Package Name来混淆替换已经安装的程序,签名可以保证相当名字,但是签名不同的包不被替换。APK如果使用一个key签名,发布时另一个key签名的文件将无法安装或覆盖老的版本,这样可以防止你已安装的应用被恶意的第三方覆盖或替换掉。

       (3)签名能够标示开发者身份,签名其实也是开发者的身份标识。交易中抵赖等事情发生时,签名可以防止抵赖的发生。

二、签名的注意事项

       可以使用标准工具-Keytool and Jarsigner-生成密钥,来签名应用程序的.apk文件。

       签名后需使用zipalign优化程序。

       模拟器开发环境,开发时通过ADB接口上传的程序会先自动被签有Debug权限,然后才传递到模拟器。Eclipse菜单的Window -> Preferences -> Android –> Build 下显示的是我们默认的调试用的签名数字证书。

       正式发布一个Android应用时,必须使用一个合适的私钥生成的数字证书来给程序签名,不能使用ADT插件或者ANT工具生成的调试证书来发布。

三、生成签名文件

(1)利用Eclipse,工程-》Android Tools-》Export Signed Application Package ...-》Browse项目(next)-》create new keystore(填写相关内容即可)。

(2)利用keytool,命令行:keytool -genkey -alias XX.keystore -keyalg RSA -validity 2000 -keystore XX.keystore。

-alias 后面跟的是别名这里是alias_name;

-keyalg 是加密方式这里是RSA算法
;

-validity 是有效期这里是20000天
;

-keystore 就是要生成的keystore的名称这里是app.keystore;      


然后按回车键,按回车后首先会提示你输入的密码:这个在签名时要用的,要记住。
然后按回车键,会再确认你的密码。
之后会依次叫你输入姓名、组织单位、组织名称、城市区域、省份名称、国家代码(CN)等。  


四、签名工具

(1)利用Eclipse,直接签名打包

(2)利用jar signer,命令行:jar signer -verbose -keystore XX.keystore -signedjar app_signed.apk  app.apk alias_name。

-keystore: keystone的名称;
-signedjar  app_signed.apk: 指定签名后生成的APK名称;
app.apk: 目标APK
;

然后按回车,会要求输入刚才设置的密码(上面需要记住的密码,生成keystore时设置的),输入后按回车就开始签名了。


五、查看签名

(1)jarsigner -verify app_signed.apk                                  

查看是否签名,如果已经签名会打印 "jar verified"。

(2)jarsigner -verify -verbose -certs app_signed.apk      

查看签名详细信息。

 

六、优化apk

android自带的工具,./build/tools/zipalign

(1)zipalign -v 4  app_signed.apk androidres.apk   apk优化

(2)zipalign -c -v 4  androidres.apk                 查看apk是否经过优化






0 0