2020Android又涼了?來看看Android的發展-談一下當下最合適的架構

前言

前前後後經歷過大項目、小項目,跨平臺,小程序,Nodejs服務等等,目前在做的Rom開發,定製各種手機中的奇葩需求,從應用層到Framework層,再到C++層,再到驅動,最終到Linux,研究過java虛擬機,雖然沒研究過ART或者老牌的Dalvik虛擬機,但原理都差不多,並不影響我對android有一個全局的認識,今天我們的主題是架構,其實對架構的理解一定要宏觀一點,大到手機操作系統架構,小到代碼邏輯設計的架構,一句老話講的好,也代表了我對架構的整體理解:

沒有最好的架構,只有最合適的架構。下面我們聊聊,一個好的架構是什麼樣子的,該怎麼去判斷呢。

好的架構應該有的優勢


大道至簡

簡單直白、樸實無華、科學至真、人生至理、靈魂至美,簡單是一個架構好的靈魂。這是考驗一個架構師的終極指標,如何保證簡單的設計,來讓大部分人接受,用起來簡單,又可以保證架構的穩定性,保證不被破壞,很難很難。


萬變不離其宗

以不變應萬變,好的架構,總能抓住不變的部分,將變的部分做好抽象,滿足各類場景,在我們代碼的世界裡就是做好接口和抽象。


抽絲剝繭

絲得一根一根地抽,繭得一層一層地剝,對的,一個好的架構絕對是層次分明,各司其職,做人做事一樣,做好自己不越界是門技術活。世間萬物,都是獨立的存在,可以很近,又可以很遠。代碼架構的設計當然離不開層次的設計。


領域驅動

架構不是滿足所有領域,不是大雜燴,他是針對特定領域的最完美的總結,關注特定領域,保持初心。

Android架構演進


MVC > MVP > MVVM

我們先回顧一下google為我們做了什麼,一開始我們接觸android,大家都在用MVC,甚至可以說沒有架構,而且那個時候app是真的簡單,但隨著不斷的迭代,問題越來越多,google也發現了這個問題,於是github開源了MVP架構的示例,教我們如何整合框架,如何在架構設計上保證業務的發展需求,再到現在主推的MVVM,其實不難發現一個共性,WEB端大家都知道吧,你看現在最火的React、Vue,不都是MVVM的架構嗎(有人說不是,有人說是,這裡不多解釋,我們不應該糾結是不是,應該理解M-V 、 V-M 是數據綁定UI,無非是單向還是雙向的,都屬於一種理念吧,理解就行。)


原生 > React Native > Flutter

一個好的架構只是MVC到MVVM嗎?我不這麼認為,從一開始我們接觸到原生的Android開發,到後來大火的React Native,我們16年還專門集成了React Native模塊,但做了幾個迭代後放棄了,我們發現為了適配Android、Ios 也花費了很多時間,倒不如用原生做的好用。目前最火的Flutter,也是Google主推的跨平臺框架,而且我們現在就在C端項目中集成了,效果還不錯,雖然也是有很多問題,但總體來看比React Native 要好,還有一點Google內部正在開發的另一個操作系統Fuchsia的UI layer採用的是Flutter,也就是說Flutter天然可以支持Android、IOS以及未來的Fuchsia。在大前端方向,對於跨平臺開發中一直在不斷迭代中尋找更好、更優的解決方案,目前來看Flutter還是更有優勢


Java > Kotlin,Dart

來說說語言,你說語言屬於架構嗎?我也不知道,但這是我架構的時候考慮的一個方向,語言是我們組織架構最基礎的單元,kotlin的普及,應該不僅僅是google認為語言不錯,讓我們廣大開發者使用,其實這裡面涉及了很多東西,我們知道最新的android引用的是open jdk,前幾年的官司打個不停,付出了不少人力財力,這肯定不是我們還要考慮的,但有一點可以肯定,kotlin語言確實是個趨勢,因為他有更合理的設計,更安全的性能表現,更加簡潔的代碼,當然你可以用java寫android寫到老,我也不認為你用kotlin寫就一定比java寫的好,看個人選擇吧。再說說Dart,這個我就有點不理解,為啥Flutter一定要用Dart寫,好像Google工程師這麼回答:說Dart就在隔壁啊,好溝通。哈哈。

小總結

通過上面的閒扯,我們基本已經有了架構的雛形了吧

  1. MVVM + 原生 + Kotlin
  2. MVVM + 原生、Flutter + Kotlin、Dart
    等等..
    自己組合吧,我目前選擇第二種,相信很多人的項目都已經是這樣了。那麼接下來我們就要實現這樣的架構,架子有了,就該塞東西了,這樣就顯得飽滿一些。

總結

從Android的架構演進,不難看出未來的世界肯定是大前端的,所謂的大前端也許是大佬們一個概念,但從這幾年好多大統一的技術出現,感覺未來不遠,也許就是明天,在這奉勸各位讀者,提升自己就在現在,T型人才未來才是互聯網的中流砥柱。

如果看到這裡的讀者,想在技術上有精進的話,推薦一些近年來我搜集的一些比較好的Android技術方面的文章,和一些2020最新的一些面試資料,由衷希望更多人能加入,一起學習交流。

精選文章篇

華為、三星等機型禁用通知權限後Toast不彈出


今天,我們已經做好準備,分享我們的 Android 架構:MvRx(發音為 “mavericks”)。MvRx 誕生於我們一次又一次地解決相同問題的認知beijingxia,使我們不再專注於開發產品。在 Android 端,存在無數的小工作需要工程師去做或考慮,來保證 app 的高質量。

在2019年10月初,公司倒閉,無奈走上找工作的道路,不想自己平時圖安逸,不思進取,再次找工作才發現,android行業也不是站在風口上,豬也能吹上天的世道了.作為技術小菜的我,再找工作那幾個月真是戰戰兢兢,被打擊得信心全無.記錄下我的面試經歷,分享給需要的人.勉勵自己要時時進步,才不會被淘汰.

那麼,包體積優化能夠給我們帶來哪些 收益 呢?如何全面對應用的包體積進行 系統分析 及 針對性優化呢?在這篇文章中,我們將一起進行深入地分析與探索。

這裡是一些個人開發者接私活和自己做軟件加廣告的一些科普知識。可是做軟件,需要服務器,需要後臺,對於一些小的開發者,想賺點廣告費而又不想做後臺使用服務器的人來說,網上提供了一些免費的接口,可以供我們使用,提供了許多數據。在這裡我分享兩個不錯的提供WEB服務的網站。

資料篇

有需要資料的可以私信我(進階)領取資料哦。

最新Android學習路線圖

2020Android又涼了?來看看Android的發展-談一下當下最合適的架構

百萬年薪必刷面試題

2020Android又涼了?來看看Android的發展-談一下當下最合適的架構

最全Android進階學習視頻

2020Android又涼了?來看看Android的發展-談一下當下最合適的架構

Android進階核心知識點

2020Android又涼了?來看看Android的發展-談一下當下最合適的架構


分享到:


相關文章: