安装标识

判例:开发者提交了应用A_free和A_paid,它们是同一应用的不同定价版本,一个1元,另一个10元,测试人员发现A_free在安装时会提示覆盖已经安装的A_paid,或者A_paid在安装时会覆盖A_free,安装发生了冲突,因此驳回了了应用A_free和A_paid。截图如下:



                             


              图1:安装提示替换应用程序                 图2:卸载时提示找不到应用程序


分析:不同手机系统对应用使用不同的标识办法,本文就叫“安装标识”,用于区分多个应用,避免出现安装、卸载或运行时可能出现的一些相互冲突问题。除此以外,安装标识还可让不同安装包用于标识自己是同一应用的不同版本,可以用来让手机系统在安装时必须以覆盖、替换的方式来升级到不同版本,系统仅保留1个安装副本。

有时开发者希望同时分开发布同一应用的不同版本,如判例中的情况,但用户下载多个版本后又会出现安装、卸载冲突的问题,因此需要开发者修改安装标识来解决这个问题。例如,S60平台需要修改uid值,而Android平台则是修改 package name等等。
但在实际情况中,修改安装标识可能导致程序包内部配置参数和代码的一些相互引用关系被破坏,这就对各个平台上安装包构建(building)的方法提出了新的难题,需要参考开发者手册来寻找对应的解决方案。例如对于Android平台,开发者手册中专门为此情况介绍了使用Library Project来同时发布同一应用的多个版本,这些版本可能只是安装标识pakcage name不同而已,地址:http://developer.android.com/guide/developing/eclipse-adt.html#libraryProject
原文:
If you are creating an application that exists in both free and paid versions. You move the part of the application that is common to both versions into a library project. The two dependent projects, with their different package names, will reference the library project and provide only the difference between the two application versions.


Howto:  http://www.google.co.uk/support/forum/p/Android+Market/thread?tid=2eaa04993f571b88&hl=en
更多平台和技术方法欢迎各位去中国移动开发者社区的相应平台技术板块去讨论。

开发者为了升级而重新发布应用时,可以不修改安装标识,以确保用户下载后,只在系统上保存最新版本的安装副本,当然也可以修改,特别是版本兼容性差别很大时,让用户可以选择使用的版本。
作者: 独立寒秋    时间: 2010-8-30 18:25

本帖最后由 独立寒秋 于 2010-8-30 19:16 编辑 

修改“安装标识”的方法是万万不行的。

有哪一款商用软件不同版本的安装标识会不一样?MM允许用户同时安装同一应用的不同版本,出现功能上的问题怎么办?同一个应用不同版本肯定有功能上的重叠,要是相同功能同时运行了,出现两个相同的界面,用户会怎么想?有些时候甚至会导致数据错误。

开发者手册仅仅是给出一种可行的解决方法,但这样做的风险它并没有说明。

同一应用不同版本之间相互覆盖、替换这本是很正常、很正确的事,MM为什么非得当作一个问题来处理,还提出一个畸形的解决方案。

作者: lanyufeng    时间: 2010-8-30 22:42

从现实的商业运营角度看,下载订购的应用和其它付费方式的应用是不一样的,用户是先付费再使用的。收了钱,自然要保证用户可以使用,而且不能破坏手机上其他已经付费应用的安装版本,除非是版本升级。如果是免费的,用户尚可选择不装或者只装其一,而不会有损失和退费发生。
从技术角度看,PC上同款软件多版本同时存在的实例也不少(安装标识不同),win7 64bit上有IE和IE 64bit 2个版本,winXP上OutLook 2007和OutLook Express 2个版本可同时存在,开发者可同时安装多个版本开发工具,如Python 2.6 / 3.1,你可以同时安装迅雷和迷你迅雷,在UNIX世界下就更常见了,不同版本的工具、库甚至操作系统都可以混合,比如Debian的stable/testing/unstable版本混合,这些软件都是维系Internet正常运转的重要部分。

从风险角度看,避免不同应用商品之间的安装冲突正是为了规避风险的必要条件,但不是充分条件,因此您提到其它安装之后可能出现的冲突问题也是需要考虑的,虽不是安装时要测试的范围,不过对测试仍是个非常好的意见,测试应该在运行时也要考虑是否有冲突发生,用户能否正常使用等,不论这个是同款应用不同版本之间,还是不同应用之间的冲突。

前文提出的方案仅供参考,欢迎开发者讨论,这是Android给出的官方方案,从Howto链接的评论回复看已经有Android开发者在商业产品中使用了。

作者: alligator    时间: 2010-9-10 16:19

本帖最后由 alligator 于 2010-9-10 19:35 编辑 

很佩服MM里居然有人跟踪android SDK的进展。

library project是Android ADT 0.9.7后才引进的功能,而对Ophone而言,即使在Ophone2.0里的ODT2.0(忘了后面具体的数字了)也不支持这种library project的开发。

所以这种library project只对Android apk适用;如果开发者的apk是为ophone准备的,如果没有其他更好的办法,那么还是只能通过修改package name来达到不相互覆盖的目的。

作者: 独舞星空    时间: 2010-11-7 01:07

看看。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值