微信Pins工程
相信你看過微信關於模組化的分享《微信Android模組化架構重構實踐》,也注意到裡面提到的pins工程結構。
作者是這樣描述的 ------“pins工程能在module之內再次構建完整的多子工程結構,通過project.properties來指定編譯依賴關係。通過依賴關係在編譯時找到所有的資源和原始碼路徑。”
仔細推敲這句話的意思,應該能知道它實現的基本原理------通過設定sourceSets指定多個java、res等路徑.
有關sourceSets的介紹: developer.android.com/studio/buil… google.github.io/android-gra…
但是,有一個問題需要要知道的是,一個module只能指定一個AndroidManifest檔案,pins工程中包含了多個AndroidManifest,它是怎麼做到的?
研究過com.android.tools.build:gradle
,會留意到它使用到一個子庫com.android.tools.build:manifest-merger
,官方通過這個庫來合併多個AndroidManifest檔案,或許pins工程也是用了這方式。
接下來,再它的基礎上,我做的一些改動,取了另一個名字叫 MicroModule,先來看一下工程結構:
與pins工程的結構大致不變,增加了androidTest
和test
,以及將project.properties
替換為build.gradle
。
MicroModule 介紹
基本原理是不變的,與微信pins工程一樣配置sourceSets
。AndroidManifest合併用了com.android.tools.build:manifest-merger
。
Usage
在根專案的build.gradle中新增外掛依賴:
buildscript {
repositories {
jcenter()
...
}
dependencies {
classpath 'com.eastwood.tools.plugins:micro-module:1.0.1'
...
}
}
複製程式碼
在模組的build.gradle中引用外掛並配置 MicroModule:
// 'micro-module'要置於'com.android.application'或'com.android.library'前。
apply plugin: 'micro-module'
apply plugin: 'com.android.application'
// 為了防止兩個沒有依賴關係的MicroModule產生引用,可以開啟下面這個程式碼邊界檢查外掛。
// apply plugin: 'micro-module-code-check'
...
microModule {
// 這裡的include類似於settings.gradle中include。
include ':p_home'
include ':p_common'
include ':p_base'
}
複製程式碼
MicroModule中的build.gradle:
dependencies {
implementation microModule(':MicroModule名稱') // 定義依賴關係,引用其他MicroModule
// 你也可以在這裡依賴其他第三方庫
// implementation '***'
// api '***'
// ...
}
複製程式碼
為了使用上的更加方便,專門寫了Android Studio的外掛,能快速的建立一個MicroMoudle.
外掛安裝步驟:
- 開啟 [File] -> [Settings...] -> [plugins] -> [Browse repositories...]
- 搜尋外掛名稱 MicroModule
外掛詳解: plugins.jetbrains.com/plugin/1078…
外掛專案地址: github.com/EastWoodYan…
最後
MicroModule已經上傳至Github,歡迎star交流。 github.com/EastWoodYan…