这是一篇以我自己的实际经历写的一篇文章。

  当下移动开发正值火爆,由于门槛低,任何一个程序员都可以比较容易的进入移动开发领域,作为App或者游戏等移动开发者,当你开发完成一个作品后,准备上线时,需要对你的作品进行签名。涉及到签名,那就少不了软件作者的签名文件。这里,可能不少刚刚进入这一领域的开发者很容易忽略签名文件的重要性,导致没有意识保管自己的签名文件,等应用在市场上线后,需要对应用升级更新时,才发现找不到签名文件或者忘记相关密码,这时为时已晚,会导致麻烦。

  这种情况在首次接触签名的开发者中并不是特例。产生这种情况的原因,是由于这类开发者之前从没有自己的签名文件,所以在对作品签名完成,应用上线后,说不定就把签名文件随手删除了。那么,等到日后对该作品升级更新后再次签名,发现找不到签名文件或者忘记密码,你很容易想到:用一个新的签名,可是等你上传到应用市场时,会发现提示不能提交了,因为一个市场中不允许同包名的应用存在。同是,也是为了防止用户下载你的软件后安装不上,也就是说,如果用户手机安装了之前你发布的作品,就算用户通过其他途径下载了你的使用了新签名的新版作品,用户也是无法安装的,这会严重影响用户心情。

  特别需要说明的是,当你签名文件丢失后,也许你认为只要你记得签名信息,用完全一样的信息新生成一个新的签名总行吧?可我实验过,就算两个签名文件的信息一模一样,分别用这两个签名文件打包同一个作品,打包出来的作品也是不能相容的!也许你的感觉和我一样:奇怪。

  为什么?我没再去深究。

  那么,签名文件丢失了怎么办?

  有的应用市场(比如360)那里可以提交签名不一样的更新,但必须说明换签名的原因。可我说明了原因还是不给通过审核。我后来想,就算通过审核了会怎么样?用户下载新版作品之后能顺利安装吗?我持怀疑态度。

  所以,最后我不得不用新的签名,同时换包名来解决这个问题。这种方法不足的地方是:对老用户有影响,如果他们之前安装了你的旧版本作品,然后安装新版作品后,他们手机上会同时存在新老两个版本的作品。这又怎么解决呢?

  黯然伤神之余,你或许会像我一样:把我这次新版签名文件马上放进自己的文件保险箱中。

  是的,我没有找到完美的解决办法。如果你知道,求告知,先拜谢。

  

请将你的App签名文件放进保险箱的更多相关文章

  1. 将dll放进exe[.Net]

    原文:将dll放进exe[.Net] 两种方案: 1.使用ILMerge工具. 缺点:需离开工程,使用第三方工具(ILMerge). 2.将dll作为Resource放进exe,exe执行时动态加载( ...

  2. 新建childTest文件夹,里面依然放进我们需要的.py文件即可

    一.模块 我们编写文件:a.py,放在C:\Python34\Lib\sit-packages下,里面写上一句代码为: print('this is a') 之后我们就可以在我们的代码里面引用a.py ...

  3. Dictionary解析json,里面的数组放进list,并绑定到DataGridView指定列

    Dictionary解析json,1.根据json建立相应的实体类,json里面的数组形式放进list集合2.取list中的数据,将相应的数据绑定到DataGridView,如下:循环(动态添加一行数 ...

  4. 如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果?

    如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果? 今天,坑爹的实验,我处理 SUN397 的时候,忘记去掉灰度图了,结果,利用微调后的 model 提取 feature,悲剧的发现,无论 ...

  5. FMDB将对象放进数据库[二](使用runtime)

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  6. FMDB将对象放进数据库[一]

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  7. MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk

    MPC8313ERDB不新鲜pkg包裹,把文件放进Ramdisk 经ltib编译器生成rootfs.ext2.gz.uboot它可以直接uboot采用.假设我们编写了相应的外部文件把Ramdisk往里 ...

  8. Win7里面如何把这一堆图标放进那个右下角的小三角框框

    Win7里面如何把这一堆图标放进那个右下角的小三角框框.. Win7里面如何把这一堆图标放进那个小框框:1.在任务栏空白处右击,点击属性:2.在属性中的通知区域-->点击自定义按钮:3.去除勾选 ...

  9. 【Java】Java创建String时,什么情况放进String Pool?

    对Java创建String是否放入String pool作代码性的试验. 参考的优秀文章 JAVA面试题解惑系列(二)——到底创建了几个String对象? public String(String o ...

随机推荐

  1. java多线程断点下载原理(代码实例演示)

    原文:http://www.open-open.com/lib/view/open1423214229232.html 其实多线程断点下载原理,很简单的,那么我们就来先了解下,如何实现多线程的断点下载 ...

  2. python中的is判断引用的对象是否一致,==判断值是否相等

    python中的is判断引用的对象是否一致,==判断值是否相等 a = 10 b = 20 list = [1,2,3,4,5] print(a in list) print(b not in lis ...

  3. C# 复制和克隆认识浅谈

    如有雷同,不胜荣欣.若转载,请注明 在C#中,用HashTable,DataTable等复制和克隆浅谈,以下直接看样例 HashTable ht = null; ht = new HashTable( ...

  4. Django打造大型企业官网(三)

    四.前端首页 4.1.导航条实现 (1)templates/new/index.html <!DOCTYPE html> <html lang="en"> ...

  5. Linux系统编程_6_进程环境(C程序典型的存储空间)

    1.八种结束Linux进程的方法: 五种正常终止方式: main函数返回: 调用exit: 调用_exit或_Exit 最后一个线程从其启动例程返回 最后一个线程调用pthread_exit 三种异常 ...

  6. python开发【第4篇】【进程、线程、协程】

    一.进程与线程概述: 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空 间. 线程,是进程的一部分,一个没有线程的进程可以被看作是单线程的.线程有时又被称为轻 ...

  7. Python开发【1.4数据类型】

    1.数字 数字数据类型用于存储数值. 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象. # 创建对象 var1 = 1 var2 = 2 # 删除对象 del var1 del ...

  8. jquery跨域请求json数据

    //服务端生成json数据json.php <?php $json=array("Volvo","BMW","SAAB"); $cb ...

  9. ios25---图片拉伸

    控制器: // // ViewController.m // 12-图片的拉伸问题 // // Created by xiaomage on 15/12/30. // Copyright © 2015 ...

  10. web filter用spring注入对象

    tomcat容器初始化顺序监听器–>过滤器–>servlet,因此springMVCservlet初始化之前,过滤器就已经初始化过了,如果在过滤器中需要注入spring容器管理的bean是 ...