Ⅰ android模塊化之MicroMole(微信Pins工程)
相信你看過微信關於模塊化的分享 《微信Android模塊化架構重構實踐》 ,也注意到裡面提到的pins工程結構。
作者是這樣描述的 ------「pins工程能在mole之畢模簡內再次構建完整的多子工程結構,通過project.properties來指定編譯依賴關系。通過依賴關系碼正在編譯時找到所有的資源和源碼路徑。」
仔細推敲這句話的意思,應該能知道它實現的基本原理------通過設置sourceSets指定手褲多個java、res等路徑.
有關sourceSets的介紹:
https://developer.android.com/studio/build/index.html#sourcesets
https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.api.AndroidSourceSet.html
但是,有一個問題需要要知道的是,一個mole只能指定一個AndroidManifest文件,pins工程中包含了多個AndroidManifest,它是怎麼做到的?
研究過 com.android.tools.build:gradle ,會留意到它使用到一個子庫 com.android.tools.build:manifest-merger ,官方通過這個庫來合並多個AndroidManifest文件,或許pins工程也是用了這方式。
接下來,再它的基礎上,我做的一些改動,取了另一個名字叫 MicroMole ,先來看一下工程結構:
與pins工程的結構大致不變,增加了 androidTest 和 test ,以及將 project.properties 替換為 build.gradle 。
基本原理是不變的,與微信pins工程一樣配置 sourceSets 。AndroidManifest合並用了 com.android.tools.build:manifest-merger 。
在根項目的build.gradle中添加插件依賴:
在模塊的build.gradle中引用插件並配置 MicroMole:
MicroMole中的build.gradle:
為了使用上的更加方便,專門寫了Android Studio的插件,能快速的創建一個MicroMoudle.
插件安裝步驟 :
插件詳解 :
https://plugins.jetbrains.com/plugin/10785-micromole
插件項目地址 :
https://github.com/EastWoodYang/micro-mole-idea-plugin
MicroMole已經上傳至Github,歡迎star交流。
https://github.com/EastWoodYang/MicroMole
可以,但是加了頭文件有幾點好處:首先模塊化更清晰;通過頭文件申明需要對外提供調用的函數,比你在其他C文件裡面用extern 申明要方便。舉個例子,現在有main.c,a.c,b.c三個C文件,當你在main.c需要用到的a.c里的函數,且函數很多,好幾十個,你需要在main.c寫好幾十個extern申明的函數語句。如果你還需要在b.c調用的話,還要在b.c裡面寫幾十個申明語句。當你還需要在其他C文件裡面調用的話,那工作量就太大了。如果我們寫個h文件,然後在裡面去extern申明需要對外提供的函數,其他C文件裡面調用只需要寫個#include "a.h"即可,方便且快捷。