请将你的App签名文件放进保险箱
这是一篇以我自己的实际经历写的一篇文章。
当下移动开发正值火爆,由于门槛低,任何一个程序员都可以比较容易的进入移动开发领域,作为App或者游戏等移动开发者,当你开发完成一个作品后,准备上线时,需要对你的作品进行签名。涉及到签名,那就少不了软件作者的签名文件。这里,可能不少刚刚进入这一领域的开发者很容易忽略签名文件的重要性,导致没有意识保管自己的签名文件,等应用在市场上线后,需要对应用升级更新时,才发现找不到签名文件或者忘记相关密码,这时为时已晚,会导致麻烦。
这种情况在首次接触签名的开发者中并不是特例。产生这种情况的原因,是由于这类开发者之前从没有自己的签名文件,所以在对作品签名完成,应用上线后,说不定就把签名文件随手删除了。那么,等到日后对该作品升级更新后再次签名,发现找不到签名文件或者忘记密码,你很容易想到:用一个新的签名,可是等你上传到应用市场时,会发现提示不能提交了,因为一个市场中不允许同包名的应用存在。同是,也是为了防止用户下载你的软件后安装不上,也就是说,如果用户手机安装了之前你发布的作品,就算用户通过其他途径下载了你的使用了新签名的新版作品,用户也是无法安装的,这会严重影响用户心情。
特别需要说明的是,当你签名文件丢失后,也许你认为只要你记得签名信息,用完全一样的信息新生成一个新的签名总行吧?可我实验过,就算两个签名文件的信息一模一样,分别用这两个签名文件打包同一个作品,打包出来的作品也是不能相容的!也许你的感觉和我一样:奇怪。
为什么?我没再去深究。
那么,签名文件丢失了怎么办?
有的应用市场(比如360)那里可以提交签名不一样的更新,但必须说明换签名的原因。可我说明了原因还是不给通过审核。我后来想,就算通过审核了会怎么样?用户下载新版作品之后能顺利安装吗?我持怀疑态度。
所以,最后我不得不用新的签名,同时换包名来解决这个问题。这种方法不足的地方是:对老用户有影响,如果他们之前安装了你的旧版本作品,然后安装新版作品后,他们手机上会同时存在新老两个版本的作品。这又怎么解决呢?
黯然伤神之余,你或许会像我一样:把我这次新版签名文件马上放进自己的文件保险箱中。
是的,我没有找到完美的解决办法。如果你知道,求告知,先拜谢。
请将你的App签名文件放进保险箱的更多相关文章
- 将dll放进exe[.Net]
原文:将dll放进exe[.Net] 两种方案: 1.使用ILMerge工具. 缺点:需离开工程,使用第三方工具(ILMerge). 2.将dll作为Resource放进exe,exe执行时动态加载( ...
- 新建childTest文件夹,里面依然放进我们需要的.py文件即可
一.模块 我们编写文件:a.py,放在C:\Python34\Lib\sit-packages下,里面写上一句代码为: print('this is a') 之后我们就可以在我们的代码里面引用a.py ...
- Dictionary解析json,里面的数组放进list,并绑定到DataGridView指定列
Dictionary解析json,1.根据json建立相应的实体类,json里面的数组形式放进list集合2.取list中的数据,将相应的数据绑定到DataGridView,如下:循环(动态添加一行数 ...
- 如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果?
如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果? 今天,坑爹的实验,我处理 SUN397 的时候,忘记去掉灰度图了,结果,利用微调后的 model 提取 feature,悲剧的发现,无论 ...
- FMDB将对象放进数据库[二](使用runtime)
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- FMDB将对象放进数据库[一]
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk
MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk 经ltib编译器生成rootfs.ext2.gz.uboot它可以直接uboot采用.假设我们编写了相应的外部文件把Ramdisk往里 ...
- Win7里面如何把这一堆图标放进那个右下角的小三角框框
Win7里面如何把这一堆图标放进那个右下角的小三角框框.. Win7里面如何把这一堆图标放进那个小框框:1.在任务栏空白处右击,点击属性:2.在属性中的通知区域-->点击自定义按钮:3.去除勾选 ...
- 【Java】Java创建String时,什么情况放进String Pool?
对Java创建String是否放入String pool作代码性的试验. 参考的优秀文章 JAVA面试题解惑系列(二)——到底创建了几个String对象? public String(String o ...
随机推荐
- 百万级 TCP 长连接即时通讯框架 t-io
原文:http://www.t-io.org:9292/ https://www.oschina.net/p/t-io
- 【SSH 基础】浅谈Hibernate--入门篇
Hibernate是什么 Hibernate是一个轻量级的ORMapping框架 ORMapping原理(Object Relational Mapping)就是把对象里面的数据和数据库里面的数据,依 ...
- jQuery—— jQuery get方法+一般处理程序处理文本框内容
网上常常看到这种交互方式,当去一个站点注冊username的时候,假设文本框内没有输入数据,或者数据输入的内容格式不正确.就会将文本框变成红色来提示你输入的内容有误. 自己将这个文本框验证的方式改变了 ...
- MFC自己主动获取网络地址函数实现----广播地址,网关,子网掩码
void CSetSignalBoxDlg::OnBnClickedButtonGetbroadcastaddr() { //凝视部分为还有一种获取IP方式,可略过 //char Name ...
- 【bzoj2282】[Sdoi2011]消防
两次bfs可得直径,答案一定不会小于所有点到直径的距离最大值,只要把直径上的边权设为0,任选直径上一点bfs可得将最大值作为二分下界,二分直径左右端点的舍弃部分 #include<algorit ...
- linux之安装软件出现Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)解决总结
sudo rm -rf /var/lib/dpkg/lock sudo rm -rf /var/cache/apt/archives/lock
- Linux/Android——输入子系统input_event传递 (二)【转】
本文转载自:http://blog.csdn.net/jscese/article/details/42099381 在前文Linux/Android——usb触摸屏驱动 - usbtouchscre ...
- bzoj4870
http://www.lydsy.com/JudgeOnline/problem.php?id=4870 矩阵快速幂... 人话题意:从nk个物品里选模k余r个物品,问方案数模P 那么我们有方程 f[ ...
- java笔记线程方式1线程终端与停止
public final void stop():让线程停止,过时了,但是还可以使用.public void interrupt():中断线程. 把线程的状态终止,并抛出一个InterruptedEx ...
- js实现页面的全屏与退出
1.在data里面定义: data(){ return{ isScreen:false, } } //是否显示全屏 fullScreen(event){ this.isScreen = !this.i ...