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

移动端兼容性讨论

作者: 勇往直前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版本兼容性问题

    相关文章

      网友评论

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

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