2018年11月23日,GIAC全球互聯(lián)網(wǎng)架構(gòu)大會在上海隆重召開。作為中國互聯(lián)網(wǎng)技術(shù)領(lǐng)域一年一度的行業(yè)盛事,本屆大會從系統(tǒng)架構(gòu)設(shè)計(jì)、機(jī)器學(xué)習(xí)、編程語言、分布式架構(gòu)等領(lǐng)域,甄選前沿科技企業(yè)代表分享2018年度最值得的回顧、總結(jié)的創(chuàng)新技術(shù)及研發(fā)實(shí)踐案例,實(shí)踐啟示,共同探索未來的互聯(lián)網(wǎng)構(gòu)建方式。
本次大會上,Mob移動開發(fā)者服務(wù)平臺MobSDK項(xiàng)目總監(jiān)余勛杰,以【MobSDK用戶接口演進(jìn)】為主題,結(jié)合Mob多年的開發(fā)經(jīng)驗(yàn),剖析互聯(lián)網(wǎng)應(yīng)用的移動端痛點(diǎn),為在場嘉賓分享:如何讓用戶接口實(shí)現(xiàn)自動化和智能化。
Mob成立于2012年,6年來已為28萬開發(fā)者,38萬個(gè)合作應(yīng)用服務(wù),獨(dú)立設(shè)備覆蓋達(dá)到96億。推出的13款SDK產(chǎn)品,涵蓋了第三方登錄、分享、短信驗(yàn)證、消息推送、手游錄像、用戶系統(tǒng)、數(shù)據(jù)API等全方面的SDK需求,幫助開發(fā)者降低開發(fā)成本,提升集成效率,打造強(qiáng)大的數(shù)據(jù)統(tǒng)計(jì)后臺。除此之外,Mob從深層出發(fā),推出多維度的移動應(yīng)用解決方案,幫助全球開發(fā)者們創(chuàng)造更大的價(jià)值。
在持續(xù)開發(fā)的解決方案中,Mob越來越深刻地認(rèn)識到用戶接口不僅要穩(wěn)定能用,還要好用易用,做到自動化+智能化。想要達(dá)到這個(gè)目標(biāo)就需要在不斷壓縮包體、做到安全易用、實(shí)現(xiàn)自動集成上不斷努力。
一、壓縮包體
包體積優(yōu)化是提高用戶體驗(yàn)的最直接手段。比較推薦的是去依賴和插件化。去依賴是因?yàn)?/span>原生SDK都攜帶自身基礎(chǔ)代碼原生SDK太大。對于一開始比較大的包體Mob通過去掉依賴的包,實(shí)現(xiàn)早期的包體積快速下降。而插件化則可以讓SDK具備伸縮性,能根據(jù)特定的場景增加或刪除相應(yīng)的模塊,對控制包體效果明顯。
過去幾年ShareSDK在不斷進(jìn)化,Mob搜索插件的思想也在不斷進(jìn)化完善。這當(dāng)中包含了早期搜索整個(gè)App的代碼,搜索指定插件列表,還有使用編譯前預(yù)處理工具等來搜索插件的方案。
1) 搜索整個(gè)App的代碼。邏輯最自然,但是速度慢,因?yàn)橐粋€(gè)APP當(dāng)中包含了成千上萬個(gè)類,掃一遍需要花費(fèi)非常多的時(shí)間。
2) 搜索指定插件列表。速度快,但不能混淆指定類。在不用開線程的情況下,毫秒級別直接反射出類,可以直接實(shí)例化,但缺點(diǎn)是字符串是固定的,不能混淆指定類。
3) 使用編譯前預(yù)處理工具。速度更快,無需混淆配置,但可讀性低。
二、安全易用
從創(chuàng)始以來Mob一直都非常重視安全性,但安全的概念是非常大的,基于接口泄露隱患的種種研究,Mob衍生出更多的更具體的易用概念——用設(shè)計(jì)思想和代碼規(guī)范來規(guī)避安全隱患,降低接口使用難度。
1) 預(yù)防回調(diào)泄露。只要接口有泄露的風(fēng)險(xiǎn),不管風(fēng)險(xiǎn)有多小,它總會發(fā)生。而在預(yù)防泄露方面來說,類并沒有表現(xiàn)出比接口優(yōu)越太多。最后Mob的選擇是讓回調(diào)跟隨業(yè)務(wù)流動,操作結(jié)束自動丟棄的解決方案。
2) 降低數(shù)據(jù)解析難度。使用常規(guī)的操作回調(diào)設(shè)計(jì)思想,很難解決統(tǒng)一業(yè)務(wù)處理和降低數(shù)據(jù)解析難度兩者的矛盾需要引入“泛型”來解決問題。
3) 實(shí)現(xiàn)接口現(xiàn)代化。適配Lambda表達(dá)式,以單方發(fā)接口為回調(diào),細(xì)分回調(diào)場景。使用鏈?zhǔn)骄幋a風(fēng)格,鏈?zhǔn)骄幋a風(fēng)格具備邏輯順暢、指示清晰的優(yōu)點(diǎn),搭配Lambda表達(dá)式更能凸顯代碼美觀。
三、自動集成。
比起產(chǎn)品革新和技術(shù)突破,讓用戶閱讀集成文檔才是最大的難題。為了讓Mob的產(chǎn)品更好推廣,更加適應(yīng)用戶的習(xí)慣,MobSDK在不斷的升級和更新。首先可以自動引入,解析Gradle配置信息,引入所需組建,引入各種依賴庫,然后自動配置,根據(jù)引入的組件,修改App的Manifest以及其他配置文件。最后自動更新,在編譯期間檢查組件的版本,進(jìn)行必要的更新。
未來,Mob將不斷豐富產(chǎn)品功能,不斷優(yōu)化和擴(kuò)展插件的使用方式,基于MobSDK產(chǎn)品矩陣打造更多樣化的產(chǎn)品,進(jìn)一步壓縮開發(fā)者們在移動開發(fā)中“手動”部分,構(gòu)建更加智能化、人性化的開發(fā)模式。