为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。

    一般开发android的开发者都知道,在我们的Android系统中,不许可安装两个相同的包的应用  

 

    假设A应用的包名:com.xwj.appA;    A应用已经在系统中存在了,这个时候再去安装一个应用B ,它的包名也叫com.xwj.appA,这时候系统就会去检查这两应用的签名是否相同。如果相同,B会把A给覆盖安装掉; 如果不相同 B安装失败;

    当你把应用发布到市场时,你的应用升级了,需要替换旧的程序,安装新的程序

    这时你需要两个条件:

包名相同    2.签名相同

     

当包名相同的时候,如果签名相同,替换安装(版本升级)成功。如果签名不相同,安装失败;

    要想自动安装(版本升级)成功,必须保证应用程序不同版本的签名完全一样。

    

    在我们程序员自己开发的apk中,一般会有一个默认的签名(新建一个应用,运行程序,在bin目录下apk文件,用压缩文件打开此文件,并进入META-INF目录),打开文件CERT.RSA

  

android应用设置签名 安卓 应用签名_包名

    这个默认签名的密钥在C:\Users\admin\.android中

android应用设置签名 安卓 应用签名_包名_02

注意:因为不同的电脑的默认签名是不一样的,当你在A电脑开发了版本1,在B电脑开发了版本2,当在一个手机中安装了版本1,再安装版本2时是不能覆盖安装的,所以应用程序需要自己签名

      

    接下来讲解如何签名:一般签名有两种方式 

一、使用Keytool和Jarsigner给程序签名(用于android低版本1.5以下)在此就不做详解了

       二、android 1.5以上暨更新版本的apk签名方式(在进行此方式签名时,一定要先clean项目)

          1.打开Eclipse->选择你要签名的项目->右击->android tools->Export signed Application package...

android应用设置签名 安卓 应用签名_android_03

          2.跳出窗口

android应用设置签名 安卓 应用签名_android_04

          3.如果是已经存在keystore的就直接选择然后next  输入keystore的密码进行签名。如果没有的话选择 create new keystore 然后选择 keystore 保存的位置,设置keystore的密码,点击Next。

android应用设置签名 安卓 应用签名_包名_05

         4.填写keystore的基本信息,分别为别名,密码,确认密码,有效期,姓名,组织,组织名称,所在城市,所在省份,国家等,点击Next

1.密码必须和上一步所设置的密码一样

·                        2.有效期:Android Market强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后,所以有效期一定                       要大于19年,否则当时间过了,你的程序将没办法再更新,将损失巨大

                  3.国家:一般写86,除非你不是中国人,哈

 

android应用设置签名 安卓 应用签名_应用程序_06

         5.选择被签名后的APK保存位置,点击finish

android应用设置签名 安卓 应用签名_应用程序_07

         6.然后就可以在你保存的位置中找到相应的被签名后的APK文件

android应用设置签名 安卓 应用签名_包名_08

注意点:记得一定不要把keystore文件给丢了,也不要把密码给忘了,否则以后的升级就保存不了以前的用户数据了,重新签名的话也不再是原来的了,正如无法逃脱歌词中写的:我已不是原来的我


   如果你的签名丢了怎么办,有两种修复方式:

     1.包名不变的情况下,改签名    -----> 牺牲用户,成全自己

缺点:无法覆盖安装,即只能提醒用户把原来的程序给卸了,安装新的应用程序(用户体验差)

     2.改包名 ,重新签名    ----->   牺牲自己,成全用户



签名之后,用zipalign(压缩对齐)优化你的APK文件

    未签名的apk不能使用,也不能优化。签名之后的apk谷歌推荐使用zipalign.exe(位于android-sdk-tools目录下)工具对其优化

      1.开始->运行->cmd

      2.d: 进入你所在sdk所在盘的目录

      3.cd android\sdk\tools  进入tools目录中

      4.输入zipalign -v 4 a.apkfinal.apka.apk为你所要优化的apk,记得拷到tools目录中,final.apk为你最终生成的apk名字)