先上鏈接哪轿,我也是看著這篇博文進行的搭建士八。主要是跟著這篇文章對一些具體的細節(jié)明確并且加上自己的一些理解腮考,為了方便自己回顧就依然按照博文的思路去理清自己的思路晋修。
1晨继、為什么要項目組件化
組件化下的各個模塊可單獨運行增炭,這一點帶來的好處博客里都有說明街望。
2、如何組件化
APP殼工程依賴各個模塊弟跑,同時有一個最基本的Common模塊供給各個模塊依賴灾前,Common里封裝了最基本的一些方法以及各個模塊都要用到的東西。
3孟辑、組件化實施流程
步驟以及一些描述上的原因可以看博文哎甲,我這里做一些細化蔫敲,主要是方便自己看。
1)組件模式和集成模式的轉(zhuǎn)換
在第二步中炭玫,我們會發(fā)現(xiàn)新建的module并沒有g(shù)radle.properties文件奈嘿,這個可以直接copy殼工程的文件,聲明的這個變量isModuleOne=true適用于區(qū)分該模塊扮演的角色吞加,因為組件花開發(fā)裙犹,各個模塊既可以作為庫,也可以作為單獨的工程自行運行衔憨。區(qū)分的方式見下圖:
我們在新建的模塊的gradle文件添加了紅框框里面的代碼叶圃,這樣就可以靈活的實現(xiàn)角色的切換。
2)組件之間AndroidManifest合并問題
組件模塊在庫和工程兩種角色切換時也會引起其他的一些問題践图,如:AndroidManifest.xml掺冠,? 在作為工程的時候我們自需要一個跟一般工程一樣的AndroidManifest.xml,但是作為庫的時候就不行了码党,畢竟一個工程只能有一個AndroidManifest.xml德崭,而他必然是在殼工程里面,所以我們可以通過gradle來區(qū)分揖盘。
如圖我們在組件module里新建一個文件夾眉厨,在這里再新建一個AndroidManifest.xml,同時在gradle文件里通過isModuleOne這個變量來區(qū)分兽狭,如果是庫的角色我們就引用module下面的AndroidManifest.xml憾股,反之使用原本的AndroidManifest.xml。這兩個的區(qū)別在于庫角色下的AndroidManifest.xml啥也不需要椭符,如圖:
原本的還是熟悉的樣紙荔燎,如圖:
3)全局Context的獲取及組件數(shù)據(jù)初始化
當組件模塊作為一個工程的時候自然需要一個全局的上下文,這里就需要一個自己的Application销钝,如何作為庫的時候去掉這個Application有咨,依然是通過gradle。首先讓我們建一個Application:
4)library依賴問題
如博文所寫蒸健,common依賴就可以了座享,其他各個組件模塊就不用依賴了,組件模塊依賴common就可以了似忧,但是Aroute是不可以的渣叛,在我們自己的項目里面已經(jīng)證明了這一點。
5)組件之間調(diào)用和通信
這一點我們的項目用的是Aroute:annotationProcessor'com.alibaba:arouter-compiler:1.1.3'盯捌, 這一點的具體用法爭取下一篇文章進行介紹淳衙。
6)組件之間資源名沖突
這一點我最深刻的體會就是一次同時復(fù)制了我的布局文件,然后名字啥也沒改,自己模塊運行感覺不到任何錯誤箫攀,一合到殼工程就出現(xiàn)錯誤了肠牲,第一次還真費了一些時間去發(fā)現(xiàn)。
我想聲明的基本就是這些靴跛,其他的連接的博文還是聽清楚的缀雳。