移动端兼容性讨论

问题

技术,包括开发和测试,与产品之间,关于兼容性问题经常出现争论。两者的诉求往往是相反的。
产品:最好是全覆盖,兼容的版本越低越好;
技术:有时候一个功能,需要针对不同版本写几套代码;测试要准备一堆手机;少兼容一个版本,可以少做很多工作。
在兼容性和成本之间,如何达到平衡?
这个就需要技术和产品之间好好商量,相信能达到一个好的妥协。

如果运气不好,遇到不讲理的产品,(概率比较低),那么技术就要苦逼了。兼容性,基本上都是重复劳动,枯燥而乏味,纯粹的成本,是精神和金钱的双重损失。比如,开发就可能要做给XCode打补丁这种无聊的事情。Xcode8 支持 iOS7及以下版本

标准

主要是操作系统版本,手机型号两个;对于安卓来说,再增加一个厂商;

举个例子:

iOS:
操作系统: iOS9及以上
手机型号: iPhone6及以上

Android:
操作系统: Android4.0及以上;(API Level15以上)
手机型号和厂商: 华为、小米、魅族、VIVO、OPPO等品牌三年内主流型号
中兴、联想、一加、锤子等品牌两年内主流型号

像这样说,虽然不够精确,但是好处是大家都能够看懂。

开发

  • 将开发工具,iOS是XCode,Android是Android Studio,升级到最新版本
  • 设置最低支持的版本号
  • 根据要求的机型,适配屏幕尺寸
  • 根据相应的分辨率,从UI那边要不同的图片资源,放到工程合适的地方
  • 检查业务代码,在需要的地方,根据不同的手机系统版本,采用不同的API实现相同的功能
  • 检查使用的第三方库,看兼容性是不是符合要求。这个一般问题不大,不过不符合的话,都是比较头疼的问题

注意: 对于Android来说,具体支持那些厂商,哪些机型,开发并不能够指定。之所以会出现兼容性问题,是一些厂商的机型的屏幕尺寸比较特殊,对于给定的图片显示不好,或者提供的系统API功能实现上有缺陷。

测试

以上面的iOS为例子,看上去好像不多,但是要做到全覆盖还是不现实的。比如iOS9也分为好几个小版本,再跟不同机型组合一下,情况也很多。另外,苹果对于碎片化控制比较严格,支持往上升,但是不支持版本往下降。
所以,一个推荐的做法是将兼容性分为A、B、C三个等级;A类属于重点支持,功能和UI两方面关注;B类属于有限支持,重点在功能,UI方面放宽要求;C类属于关注类型,不做兼容性要求。
以iOS为例:
A类: iPhone X + iOS11.; iPhone8 + iOS11.; iPhone 7 Plus + iOS10.; iPhone 6s + iOS10.; 自己团队的测试进行人工验证;
B类: 以兼容性要求,“操作系统: iOS9及以上手机型号: iPhone6及以上”,找一家云测试服务商进行自动化测试
C类: 上线后收集用户反馈,根据实际情况,调整A类和B类的列表

覆盖率

  • 要求100%的覆盖率是不现实的;

  • 一般情况下,有90% ~ 95%的覆盖率就差不多了;

习惯上,年轻人2年就会换新手机,换下来的老款,给父母用了;那缺失的5% ~ 10%一般都是非活跃用户,价值很小。

image.png

根据这张图,当前,只要重点支持iOS11和iOS10两个版本就可以了。

  • 国内,统计中国用户量的分布,这个有一定的参考价值。只是,目前还没有比较有公信力的网站,所以不能作为主要依据。比如:2018年2月,中国iOS各版本占有率(份额)排行榜:iOS 11.3第22
    腾讯移动分析

  • 自己的统计结果。这个可以作为主要依据。一般的移动应用,都会有专门的用户统计模块,一般是集成第三方库,比如免费的友盟统计就很好用。根据后台数据,需要支持的系统版本和机型就比较清楚了。这是应用自己的数据,应该重点关注。

经验规律

以iOS为例:

  • 重点兼容两个版本,比如当前,重点兼容iOS11和iOS10

  • 有限支持第三个版本,比如当前,有限支持iOS9

  • 需要支持的机型,从苹果官网可以看出来。还在卖的机型,一般要支持。

image.png

从这里可以看出,iPhone X, iPhone 8, iPhone 7, iPhone 6s, iPhone SE这几个机型应该支持兼容性

  • 苹果公司提供的开发工具XCode,升级到最新版本,里面有支持的iOS版本和具体机型,这个代表了苹果公司对兼容性的态度,很有参考价值。

  • 根据产品所处阶段和用户数灵活调整兼容性需求
    初创阶段:
    上线时间少于1年,或者用户数10w以下;
    偏重节约成本,集中资源打磨产品,覆盖率80%左右;
    以iOS为例,只要适配iOS11就可以了;
    发展阶段:
    上线时间少于2年,或者用户数100w以下;
    成本和覆盖率平衡,覆盖率达到90%以上;
    以iOS为例,需要适配iOS11,iOS10;
    成熟阶段:
    上线时间大于3年,或者用户数100w以上,还没有突破1000w;
    偏重覆盖率,覆盖率达到95%以上;
    以iOS为例,需要适配iOS11,iOS10,iOS9;
    独角兽阶段:
    用户数突破1000w;
    覆盖率作为一件重要事情来抓,增加资源投入,覆盖率向100%方向努力;
    以iOS为例,需要适配iOS11,iOS10,iOS9;iOS8看活跃用户数占比评估是否支持;

H5兼容性

大多数情况,移动APP是混合结构,APP通过UIWebView(也就是常说的内嵌浏览器,iOS是Safari,Android是chrome)来调用H5页面,所以不需要单独考虑。
当然,如果是H5插件,写出的页面不是通过App访问,而是通过浏览器形式访问,那么还需要额外考虑浏览器的兼容性。比如UC浏览器,QQ浏览器,百度浏览器等等。

大公司的态度

  • 苹果:不重视兼容性,留出一定的时间,等待客户升级最新的操作系统版本,更换硬件设备。对于碎片化的控制很好。在移动端,是无可争议的老大。在PC领域增长很快,全MAC开发,成了很多公司吸引人才加盟的一个有效手段。
  • 谷歌:不想考虑兼容性,然而由于对于Android系统控制力弱,导致碎片化严重,很无奈的感觉。Android里面做的比较好的厂商,比如华为,基本上也是在向苹果学习。比如主流机型P20,P10,跟iPhone真的很像。
  • 微软:很重视兼容性。特别是PC时代,一个API,由于兼容性,可能有10多个版本,让开发者很是讨厌。在移动端,几乎退出了竞争。在PC领域,面对Mac的进攻,也基本没什么好的方法。IE,在前端领域,几乎成了头疼的代名词。Windows版本,已经不是碎片化的问题,是有些机子,是根本不会考虑升级系统的问题了。

折中方案: 在覆盖率和成本之间找到一个平衡点

参考文章

ios用户系统占比研究-老铁,是时候干掉 iOS8 了!
iOS系统-官网统计
对于不同iOS系统的兼容性探讨
Android兼容性测试
Android版本兼容性问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_X自主阅读 15,979评论 3 119
  • 创业会变成多普通呢? 就像去麦当劳肯德基吃个汉堡那样普通。 当一个人安排自己的职业规划时,创业就像考公务员、校招、...
    Larissa阅读 424评论 0 0
  • 人这种生物就是在磨难与困苦之中,跌跌撞撞饱受挫折之后才会逼着自己成长。也许是因为父母的原因,从小就特别在意别人的眼...
    长眠于星海之中阅读 496评论 0 0
  • 1、面试越麻烦的公司越好,越容易通过的公司,往往越没有实力。 如果你去面试,面试官只有一个问题,说:“看到那边的麻...
    万能的老J阅读 374评论 7 6
  • 我默默地彳亍着 却举步维艰 沉重的枷锁 将我束缚地气息奄奄 满身的伤痕 还没有消退 便已忘记了 疼痛的滋味 我用匕...
    f不忘初心阅读 180评论 0 1