Android搭建模塊化應用
第一次開始學習 Kotlin,也是第一次構建多模塊項目。其中踩過很多坑,也浪費了不少時間,但是還是有成果的,所以記錄下來以便後續查看。
創建 Kotlin Project
首先創建一個新的Project,注意:下方要勾選 Include Kotlin support,然後正常創建即可。
創建BaseLibrary
接著我們在原 Project 中再創建一個新的 Module,勾選 Android Library 作為 BaseLibrary。
因為這是一個基礎庫,所以一些共有的參數我們都會放在這裡。 首先我們就要先把 styles.xml 設定好,也就是 App 的主題文件,這裡可以直接把 KotlinMall Project 中的 style 內容複製到 BaseLibrary 中。
然後我們要把這個新建的庫作為 KotlinMall Project 的依賴庫。
通過快捷鍵 Shift+Ctrl+Alt+S 打開 Project Structure ,選擇 app 的 Dependencies ,點擊 "+" 後的 Module dependency ,選擇 baselibrary 確認即可。
當編譯完成後,我們就可以注釋掉或者直接刪除 KotlinMall Project 中的 styles.xml 中的內容,因為 BaseLibrary 已經作為 KotlinMall Project 的依賴庫了,所以主項目可以直接取到 BaseLibrary 中的 style 文件並使用該主題。
創建UserCenter
創建一個 Android Library 作為 UserCenter,再新建包名 ui.activity 並創建一個 RegisterActivity。 然後在 gradle.properties 中寫 ,這句話主要用來判斷 UserCenter 是不是作為依賴庫,這樣就可以通過 false 或者 true 來進行單獨調試,或者做為主項目工程的一個模塊一起運行。
既然可以分開,那麼我們在編譯和運行的時候肯定要區分對待,不然程序就不知道我們要運行的是哪個了。 於是我們在 src/main 中新建 2 個目錄,分別為 debug 和 release, 用來存放不同版本的 AndroidManifest.xml,那麼他們又有何區別呢?
存放 debug 中的 AndroidManifest.xml,由於是可以單獨模塊運行,所以配置文件必不可少。
而在 release 目錄下,只需要註冊 Activity 即可,因為它要和 App 一起運行,不需要額外的操作。
當然區分開來僅僅是不夠的,還要用代碼進行判斷。我們需要打開 UserCenter 的 build.gradle, 對插件進行區分,來判斷編譯的時候是作為庫還是單獨的運行程序。
接著在android方法中添加以下方法來選擇運行哪個 AndroidManifest.xml。
測試
這樣,總體的我們已經搭好了,現在只需要驗證一下能不能實現就大功告成。 我們現在單獨運行 UserCenter 模塊,應該是可以直接運行的,這說明我們邏輯和代碼都是正確的,因為isUserModule = false。
讓我們看看在 KotlinMall 工程中運行 UserCenter 模塊,首先改變 gradle.properties 中的 isUserModule 為 true, 這時在 KotlinMall 的 AndroidManifest.xml 中,註冊 UserCenter 模塊中的 RegisterActivity 並作為啟動頁。
運行 App 後發現:在 KotlinMall 中顯示了 UserCenter 模塊中的 Activity,這說明也是正確的。
總結
至此 Android 搭建多模塊已經完成。我們可以通過 " isUserModule = false / true " 來設定對項目進行單獨運行還是一起運行。
當 isUserModule = true 時,UserCenter 模塊是無法單獨運行的了;
當 isUserModule = false 時,兩個模塊都能單獨運行,但互不相通。
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:LuckyLevel |