問題
技術(shù),包括開發(fā)和測試,與產(chǎn)品之間,關(guān)于兼容性問題經(jīng)常出現(xiàn)爭論。兩者的訴求往往是相反的。
產(chǎn)品:最好是全覆蓋,兼容的版本越低越好;
技術(shù):有時候一個功能,需要針對不同版本寫幾套代碼;測試要準(zhǔn)備一堆手機;少兼容一個版本,可以少做很多工作。
在兼容性和成本之間,如何達到平衡?
這個就需要技術(shù)和產(chǎn)品之間好好商量,相信能達到一個好的妥協(xié)。
如果運氣不好,遇到不講理的產(chǎn)品,(概率比較低),那么技術(shù)就要苦逼了。兼容性,基本上都是重復(fù)勞動,枯燥而乏味,純粹的成本,是精神和金錢的雙重損失。比如,開發(fā)就可能要做給XCode打補丁這種無聊的事情。Xcode8 支持 iOS7及以下版本
標(biāo)準(zhǔn)
主要是操作系統(tǒng)版本,手機型號兩個;對于安卓來說,再增加一個廠商;
舉個例子:
iOS:
操作系統(tǒng): iOS9及以上
手機型號: iPhone6及以上
Android:
操作系統(tǒng): Android4.0及以上;(API Level15以上)
手機型號和廠商: 華為、小米、魅族、VIVO、OPPO等品牌三年內(nèi)主流型號
中興、聯(lián)想、一加、錘子等品牌兩年內(nèi)主流型號
像這樣說,雖然不夠精確,但是好處是大家都能夠看懂。
開發(fā)
- 將開發(fā)工具,iOS是XCode,Android是Android Studio,升級到最新版本
- 設(shè)置最低支持的版本號
- 根據(jù)要求的機型,適配屏幕尺寸
- 根據(jù)相應(yīng)的分辨率,從UI那邊要不同的圖片資源,放到工程合適的地方
- 檢查業(yè)務(wù)代碼,在需要的地方,根據(jù)不同的手機系統(tǒng)版本,采用不同的API實現(xiàn)相同的功能
- 檢查使用的第三方庫,看兼容性是不是符合要求。這個一般問題不大,不過不符合的話,都是比較頭疼的問題
注意: 對于Android來說,具體支持那些廠商,哪些機型,開發(fā)并不能夠指定。之所以會出現(xiàn)兼容性問題,是一些廠商的機型的屏幕尺寸比較特殊,對于給定的圖片顯示不好,或者提供的系統(tǒng)API功能實現(xiàn)上有缺陷。
測試
以上面的iOS為例子,看上去好像不多,但是要做到全覆蓋還是不現(xiàn)實的。比如iOS9也分為好幾個小版本,再跟不同機型組合一下,情況也很多。另外,蘋果對于碎片化控制比較嚴(yán)格,支持往上升,但是不支持版本往下降。
所以,一個推薦的做法是將兼容性分為A、B、C三個等級;A類屬于重點支持,功能和UI兩方面關(guān)注;B類屬于有限支持,重點在功能,UI方面放寬要求;C類屬于關(guān)注類型,不做兼容性要求。
以iOS為例:
A類: iPhone X + iOS11.; iPhone8 + iOS11.; iPhone 7 Plus + iOS10.; iPhone 6s + iOS10.; 自己團隊的測試進行人工驗證;
B類: 以兼容性要求,“操作系統(tǒng): iOS9及以上手機型號: iPhone6及以上”,找一家云測試服務(wù)商進行自動化測試
C類: 上線后收集用戶反饋,根據(jù)實際情況,調(diào)整A類和B類的列表
覆蓋率
要求100%的覆蓋率是不現(xiàn)實的;
一般情況下,有90% ~ 95%的覆蓋率就差不多了;
習(xí)慣上,年輕人2年就會換新手機,換下來的老款,給父母用了;那缺失的5% ~ 10%一般都是非活躍用戶,價值很小。
- 蘋果自己的用戶量統(tǒng)計,這是一個很重要的參考指標(biāo)。iOS系統(tǒng)-官網(wǎng)統(tǒng)計
image.png
根據(jù)這張圖,當(dāng)前,只要重點支持iOS11和iOS10兩個版本就可以了。
國內(nèi),統(tǒng)計中國用戶量的分布,這個有一定的參考價值。只是,目前還沒有比較有公信力的網(wǎng)站,所以不能作為主要依據(jù)。比如:2018年2月,中國iOS各版本占有率(份額)排行榜:iOS 11.3第22
騰訊移動分析自己的統(tǒng)計結(jié)果。這個可以作為主要依據(jù)。一般的移動應(yīng)用,都會有專門的用戶統(tǒng)計模塊,一般是集成第三方庫,比如免費的友盟統(tǒng)計就很好用。根據(jù)后臺數(shù)據(jù),需要支持的系統(tǒng)版本和機型就比較清楚了。這是應(yīng)用自己的數(shù)據(jù),應(yīng)該重點關(guān)注。
經(jīng)驗規(guī)律
以iOS為例:
重點兼容兩個版本,比如當(dāng)前,重點兼容iOS11和iOS10
有限支持第三個版本,比如當(dāng)前,有限支持iOS9
需要支持的機型,從蘋果官網(wǎng)可以看出來。還在賣的機型,一般要支持。
image.png
從這里可以看出,iPhone X, iPhone 8, iPhone 7, iPhone 6s, iPhone SE這幾個機型應(yīng)該支持兼容性
蘋果公司提供的開發(fā)工具XCode,升級到最新版本,里面有支持的iOS版本和具體機型,這個代表了蘋果公司對兼容性的態(tài)度,很有參考價值。
根據(jù)產(chǎn)品所處階段和用戶數(shù)靈活調(diào)整兼容性需求
初創(chuàng)階段:
上線時間少于1年,或者用戶數(shù)10w以下;
偏重節(jié)約成本,集中資源打磨產(chǎn)品,覆蓋率80%左右;
以iOS為例,只要適配iOS11就可以了;
發(fā)展階段:
上線時間少于2年,或者用戶數(shù)100w以下;
成本和覆蓋率平衡,覆蓋率達到90%以上;
以iOS為例,需要適配iOS11,iOS10;
成熟階段:
上線時間大于3年,或者用戶數(shù)100w以上,還沒有突破1000w;
偏重覆蓋率,覆蓋率達到95%以上;
以iOS為例,需要適配iOS11,iOS10,iOS9;
獨角獸階段:
用戶數(shù)突破1000w;
覆蓋率作為一件重要事情來抓,增加資源投入,覆蓋率向100%方向努力;
以iOS為例,需要適配iOS11,iOS10,iOS9;iOS8看活躍用戶數(shù)占比評估是否支持;
H5兼容性
大多數(shù)情況,移動APP是混合結(jié)構(gòu),APP通過UIWebView(也就是常說的內(nèi)嵌瀏覽器,iOS是Safari,Android是chrome)來調(diào)用H5頁面,所以不需要單獨考慮。
當(dāng)然,如果是H5插件,寫出的頁面不是通過App訪問,而是通過瀏覽器形式訪問,那么還需要額外考慮瀏覽器的兼容性。比如UC瀏覽器,QQ瀏覽器,百度瀏覽器等等。
大公司的態(tài)度
- 蘋果:不重視兼容性,留出一定的時間,等待客戶升級最新的操作系統(tǒng)版本,更換硬件設(shè)備。對于碎片化的控制很好。在移動端,是無可爭議的老大。在PC領(lǐng)域增長很快,全MAC開發(fā),成了很多公司吸引人才加盟的一個有效手段。
- 谷歌:不想考慮兼容性,然而由于對于Android系統(tǒng)控制力弱,導(dǎo)致碎片化嚴(yán)重,很無奈的感覺。Android里面做的比較好的廠商,比如華為,基本上也是在向蘋果學(xué)習(xí)。比如主流機型P20,P10,跟iPhone真的很像。
- 微軟:很重視兼容性。特別是PC時代,一個API,由于兼容性,可能有10多個版本,讓開發(fā)者很是討厭。在移動端,幾乎退出了競爭。在PC領(lǐng)域,面對Mac的進攻,也基本沒什么好的方法。IE,在前端領(lǐng)域,幾乎成了頭疼的代名詞。Windows版本,已經(jīng)不是碎片化的問題,是有些機子,是根本不會考慮升級系統(tǒng)的問題了。
折中方案: 在覆蓋率和成本之間找到一個平衡點
參考文章
ios用戶系統(tǒng)占比研究-老鐵,是時候干掉 iOS8 了!
iOS系統(tǒng)-官網(wǎng)統(tǒng)計
對于不同iOS系統(tǒng)的兼容性探討
Android兼容性測試
Android版本兼容性問題

