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

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

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

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

这时你需要两个条件:

1.包名相同 2.签名相同

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

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

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

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


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

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

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

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

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


2.跳出窗口


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


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

注意点:1.密码必须和上一步所设置的密码一样

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

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

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


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


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


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

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

优点:你在各个应用市场的排名还是原来的排名(比如你原先在应用市场排名第一,这样子改还是第一,适合应用市场排名高 的)

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

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



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

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

1.开始->运行->cmd

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

3.cdandroid\sdk\tools 进入tools目录中

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


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android应用程序版本号管理(官方文档中文版)
  6. Android下使用lamemp3库将PCM录音数据压缩为MP3格式
  7. Android资源访问
  8. Android应用设计提示:Google Play和属性
  9. C虾仔笔记 - 数据存储

随机推荐

  1. android widget ViewFlipper
  2. Android(安卓)Binder原理(一)学习Binder前
  3. 底部菜单
  4. CheckBox as Image use button
  5. 系出名门Android(1) - 在 Windows 下搭建
  6. (已解决)Android(安卓)Studio JVM报错解决
  7. Android(安卓)logcat log size -- Androi
  8. 【Android布局】在程序中设置android:gra
  9. android view 局部刷新
  10. android:gravity/android:layout_gravity