前言
Android系統(tǒng)離不開各App來提供豐富的功能,下面再來簡單說一說應(yīng)用的一些技術(shù)演進(jìn)。
移動端跨平臺技術(shù)
從最開始以Cordova為基礎(chǔ)(依賴于WebView)的Hybrid混合開發(fā)技術(shù),到React Native的橋接(將JS轉(zhuǎn)為Native)的技術(shù),再到最新的Flutter技術(shù)。Flutter是Google發(fā)布的全新的移動跨平臺UI框架,渲染引擎依靠跨平臺的Skia圖形庫來實(shí)現(xiàn),依賴系統(tǒng)的只有圖形繪制相關(guān)的接口,可以在最大程度上保證不同平臺、不同設(shè)備的體驗(yàn)一致性,邏輯處理使用Dart語言,執(zhí)行效率比JavaScript高。另外,Google內(nèi)部正在開發(fā)的另一個(gè)操作系統(tǒng)Fuchsia的UI layer采用的是Flutter,也就是說Flutter天然可以支持Android、IOS以及未來的Fuchsia。在大前端方向,對于跨平臺開發(fā)中一直在不斷迭代中尋找更好、更優(yōu)的解決方案,目前來看Flutter還是更有優(yōu)勢。
附:學(xué)習(xí)知識點(diǎn)

應(yīng)用架構(gòu)
MVC模式(Model–view–controller)但Activity類過于臃腫,為解決這個(gè)問題,有了MVP(Model–view–presenter),presenter不僅要操作數(shù)據(jù),而且要更新view;再到MVVM(Model-View-ViewModel)解決了MVP大量的手動View和Model同步的問題,提供雙向綁定機(jī)制。
附:學(xué)習(xí)知識點(diǎn)

熱修復(fù)與插件化技術(shù)
熱修復(fù)的主要應(yīng)用場景是為了讓用戶無感得修復(fù)線上缺陷,比如Tinker,Andfix,Sophix等。插件化是為了減少模塊耦合,可減少主程序的規(guī)模,可按需加載,比如DroidPlugin,OpenAtlas等。關(guān)于各個(gè)熱修復(fù)與插件化的細(xì)節(jié)不再展開,這里就說一點(diǎn),Android 7.0對Native的NDK的調(diào)用限制是手銬,尤其是Android 9.0對Java層SDK的調(diào)用限制就是腳銬,那么對于Android應(yīng)用想再搞插件化之類的黑科技便是帶著腳手銬跳舞,能跳但舞姿可能不太美觀。
附:學(xué)習(xí)知識點(diǎn)

App Bundle
隨著應(yīng)用不斷演講,功能越來越復(fù)雜,且應(yīng)用針對不同屏幕設(shè)備、不同國家語言資源都打包在同一個(gè)App,導(dǎo)致應(yīng)用包不斷增大,據(jù)統(tǒng)計(jì)自2012年以來應(yīng)用包大小增長5倍。雖然現(xiàn)在手機(jī)的存儲空間越來越大,但用戶照片、視頻等媒體文件品質(zhì)在逐漸提升,導(dǎo)致設(shè)備可用空間逐漸緊縮。為此Google在去年Google I/O大會講述Android引入新的App動態(tài)化框架(即Android App Bundle,縮寫為AAB)。利用Split Apk完成動態(tài)加載,使用AAB動態(tài)下發(fā)方式,可顯著縮小應(yīng)用體積,減少對存儲空間的占用。
Kotlin
是Google推薦的官方靜態(tài)編程語言,與Java互通,可相互轉(zhuǎn)換。Kotlin編譯成Java字節(jié)碼,也可以編譯成JavaScript,運(yùn)行在沒有JVM的設(shè)備上,簡潔安全。使用Kotlin更快速地編寫Android應(yīng)用,可以提高開發(fā)者的工作效率,少編寫樣板代碼,被稱之為 Android 世界的Swift。谷歌開發(fā)者社區(qū)做過一個(gè)問卷調(diào)查,大概有40%的Android開發(fā)者已使用過Kotlin。這里并非鼓勵大家一定都要使用Kotlin,學(xué)習(xí)新語言就像一次投資,要權(quán)衡團(tuán)隊(duì)成本與收益之間的利弊。
附《Android核心知識筆記2020》分享
前段時(shí)間我和圈子里的幾位架構(gòu)師朋友一起閑聊時(shí)的突發(fā)奇想,我們在學(xué)習(xí)Android開發(fā)的時(shí)候或多或少也受到了一些前輩的指導(dǎo),所以想把這份情懷延續(xù)下去。三個(gè)月后,這套資料就出來了,需要這份資料的朋友加Android學(xué)習(xí)交流群1049273031即可獲取。
