Android面試題集錦在這裏,2021Android高級進階學習資料

mb6129afd4eff93 2021-09-18 22:11:57 阅读数:33

android 2021android android

此次手寫架構,解决的問題是:

1、讓 App內 各個功能模塊能够獨立開發單元測試,也可以 所有模塊集成打包,統一測試

獨立開發
更改gradle.properties的配置,使得每個功能模塊都成為application, 可以獨立打包成apk,單獨運行。單個模塊,獨立測試。

集成打包
更改gradle.properties的配置,使得原先每個單獨模塊,都變成library,被 主模塊引用,這時候只有主模塊能够打包apk,所有功能都集成在這個apk內。

2、實現 功能模塊的整體移植,靈活拔插

故事背景
當你們公司有多個安卓開發人員,開發出核心業務相同,但是UI不同,其他業務不同的一系列App時(如果核心業務是X,你們有5個開發人員,做出了A,B,C,D,E 5個app,都包含核心業務X,但是除了X之外,其他的業務模塊各不相同)這時候,如果領導要把A裏面的一個非核心功能,挪到B裏面…

現狀
開發B的程序猿可能要罵娘,因為他在從移植A的代碼中剝離代碼 遇到了很多高耦合,低內聚 的類結構,挪過來之後,牽一發而動全身,動一點小地方,整個代碼滿江紅。

理想
如果這個時候,我們通過代碼框架的配置,能够把A裏面的一個模塊,作為一個module 移植到 工程內部,然後主module 來引用這個module,略微寫一些代碼來使得這個功能模塊在app中生效。那麼無論是多少個功能模塊,都可以作為整體來 給其他app複用。這樣開發人員也不用相互罵娘了,如果挪過來的模塊存在bug或者其他問題,也不用甩鍋,模塊原本是誰開發的,找誰就好了。

3、保證App內 業務模塊的相互隔離,但是又不妨礙業務模塊之間的數據交互

我們開發app的功能模塊,一個業務,可能是通過一個Activity或者 一個Fragment 作為對外的窗口,也可能是。***所謂窗口,就是這個業務,相對於其他模塊,"有且只有"一個入口,沒有任何其他可以觸達到這個業務的途徑。***業務代碼之間相互隔離,絕對不可以有相互引用。那麼,既然相互不會引用,那A模塊一定要用到B模塊的數據,怎麼辦呢?下文提供解决方案。

正文大綱

1、代碼結構現狀以及理想狀態一覽

2、功能組件化的實現思路,實現組件移植拔插

3、參考ARouter源碼,寫出自己的Router框架,統一通過Router來進行模塊的切換 以及 組件之間數據的交互

4、使用組件api化,在模塊很多的情况下優化公共模塊的結構

正文

1、代碼結構現狀以及理想狀態一覽

現狀;

Android面試題集錦在這裏,2021Android高級進階學習資料_Android

代碼有模塊化的迹象,但是沒有對業務模塊進行非常明顯的模塊化(不明白啥意思是吧?不明白就對了,app這個module裏面其實還有很多東西沒有展示出來,請看下圖:試想,把所有的模塊集中到一個module的一個包裏面,當你要移植某一個功能的時候,想想那酸爽…當然如果你口味別致,那當我沒說)

Android面試題集錦在這裏,2021Android高級進階學習資料_程序員_02

理想:

Android面試題集錦在這裏,2021Android高級進階學習資料_Android_03

理想化的話,參照:理想.png; 項目結構層次分明,脈絡清晰

按照圖中的分層,詳細解釋一下:

外殼層:app module

內部代碼只寫 app的骨骼框架,比如說,你的app是這個樣子的結構:

Android面試題集錦在這裏,2021Android高級進階學習資料_程序員_04

下方有N個TAB,通過Fragment來進行切換模塊。這種架構肯定不少見。

這個時候,外殼層 app module,就只需要寫上 上面這種UI架構的框架代碼就行了,至於有多少個模塊,需要代碼去讀取配置進行顯示。你問我怎麼寫這種UI框架嗎?網上一大把的,如果實在找不到,來我的 github

業務層

我們的業務模塊,對外接口可能是一個Activity* *(**比如說,登錄模塊,只對外提供一個LoginActivity,有且僅有這一個窗口)或者 是一個Fragment,就像上圖(典型的app架構.png), 如果app的UI框架是通過切換Fragment來卻換業務模塊的話。business**這個目錄,將所有的業務模塊包含進去,每個模塊又是獨立的module,這樣既實現了業務代碼隔離,又能一眼看到所有的業務模塊,正所謂,一目了然。

功能組件層

每一個業務模塊,不可避免的需要用到一些公用工具類,有的是第三方SDK的再次封裝,有的是自己的工具類,或者自己寫的自定義控件,還有可能是 所有業務模塊都需要的 輔助模塊,都放在這裏。

路由框架層

設計這一層,是想讓app內的所有Activity,業務模塊Fragment,以及模塊之間的數據交互,都由 這一層開放出去的接口來負責

gradle統一配置文件

工程內部的一些全局gradle變量,放在這裏,整個工程都有效

module編譯設置

setting.gradle 配置要編譯的module; 也可以做更複雜的操作,比如,寫gradle代碼去自動生成一些module,免除人為創建的麻煩.

最後

現在都說互聯網寒冬,其實無非就是你上錯了車,且穿的少(技能),要是你上對車,自身技術能力够强,公司換掉的代價大,怎麼可能會被裁掉,都是淘汰末端的業務Curd而已!現如今市場上初級程序員泛濫,這套教程針對Android開發工程師1-6年的人員、正處於瓶頸期,想要年後突破自己漲薪的,進階Android中高級、架構師對你更是如魚得水!

 CodeChina開源項目地址:Android學習PDF+架構視頻+面試文檔+源碼筆記

為什麼某些人會一直比你優秀,是因為他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足於現狀內心在竊喜!

Android架構師之路很漫長,一起共勉吧!

版权声明:本文为[mb6129afd4eff93]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210918221156522r.html