美文网首页
移动端兼容性讨论

移动端兼容性讨论

作者: 勇往直前888 | 来源:发表于2018-06-06 18:51 被阅读137次

问题

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

如果运气不好,遇到不讲理的产品,(概率比较低),那么技术就要苦逼了。兼容性,基本上都是重复劳动,枯燥而乏味,纯粹的成本,是精神和金钱的双重损失。比如,开发就可能要做给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版本兼容性问题

相关文章

  • 移动端兼容性讨论

    问题 技术,包括开发和测试,与产品之间,关于兼容性问题经常出现争论。两者的诉求往往是相反的。产品:最好是全覆盖,兼...

  • 2019-08-12 js题

    移动端和PC端有什么区别 PC考虑的是浏览器的兼容性,而移动端开发考虑的更多的是手机兼容性、 CSS3的动画在移动...

  • 移动端网页特效

    移动端浏览器兼容性较好,不需要考虑以前JS的兼容性问题,可以放心的使用原生JS书写效果,但是移动端也有自己独特的地...

  • 移动端开头

    移动端开头 2.解决360浏览器兼容性问题

  • 移动端

    移动端开发和 PC 端开发有哪些区别 移动端 考虑手机兼容性 使用触屏事件 布局自适应rem 动画处理CSS3 移...

  • 旋转木马轮播图

    介绍 支持pc、移动端pc左右箭头控制移动端左右滑动 兼容性 ie >= 10其他主流浏览器都支持 使用文档: 注...

  • 补充8: flex布局

    flex 布局与传统布局 传统布局兼容性好, 但是布局繁琐, 且不适合移动端flex布局更方便, 更适用移动端. ...

  • flex布局

    flex布局在PC端可能兼容性堪忧,但是在移动端可以做兼容性处理,Android2.1起开始支持旧语法,iOS s...

  • 移动端兼容性问题

    input 兼容问题-webkit-appearance:none !important;上面不行的话 直接css...

  • 移动端常见兼容性

    随着手机的普及,移动端的开发也成了一个重要的方向,但由于设备的不统一会造成一些兼容性问题, 1、安卓浏览器看背景图...

网友评论

      本文标题:移动端兼容性讨论

      本文链接:https://www.haomeiwen.com/subject/pmhbsftx.html