Android 搭建模塊化應用

        第一次開始學習 Kotlin,也是第一次構建多模塊項目。其中踩過很多坑,也浪費了不少時間,但是還是有成果的,所以記錄下來以便後續查看。

創建 Kotlin Project

首先創建一個新的Project,注意:下方要勾選 Include Kotlin support,然後正常創建即可。 
創建KotlinMall Project

創建BaseLibrary

接着我們在原 Project 中再創建一個新的 Module,勾選 Android Library 作爲 BaseLibrary。 
創建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 中寫 isUserModule=false ,這句話主要用來判斷 UserCenter 是不是作爲依賴庫,這樣就可以通過 false 或者 true 來進行單獨調試,或者做爲主項目工程的一個模塊一起運行。 
        既然可以分開,那麼我們在編譯和運行的時候肯定要區分對待,不然程序就不知道我們要運行的是哪個了。 
於是我們在 src/main 中新建 2 個目錄,分別爲 debug 和 release, 用來存放不同版本的 AndroidManifest.xml,那麼他們又有何區別呢? 
        目錄 
        存放 debug 中的 AndroidManifest.xml,由於是可以單獨模塊運行,所以配置文件必不可少。 
        UserCenter中release的AndroidManifest.xml,可以單獨運行
        而在 release 目錄下,只需要註冊 Activity 即可,因爲它要和 App 一起運行,不需要額外的操作。 
        UserCenter中release的AndroidManifest.xml

        當然區分開來僅僅是不夠的,還要用代碼進行判斷。我們需要打開 UserCenter 的 build.gradle, 對插件進行區分,來判斷編譯的時候是作爲庫還是單獨的運行程序。

  1. if (isUserModule.toBoolean()) {
  2. apply plugin: 'com.android.library'
  3. }else{
  4. apply plugin: 'com.android.application'
  5. }

        接着在android方法中添加以下方法來選擇運行哪個 AndroidManifest.xml。

  1. sourceSets {
  2. main {
  3. if (isUserModule.toBoolean()) {
  4. manifest.srcFile 'src/main/release/AndroidManifest.xml'
  5. } else {
  6. manifest.srcFile 'src/main/debug/AndroidManifest.xml'
  7. }
  8. }
  9. }

測試

        這樣,總體的我們已經搭好了,現在只需要驗證一下能不能實現就大功告成。 
        我們現在單獨運行 UserCenter 模塊,應該是可以直接運行的,這說明我們邏輯和代碼都是正確的,因爲 isUserModule = false 。 
        UserCenter運行時截圖 
        讓我們看看 在KotlinMall 工程中運行 UserCenter 模塊,首先改變 gradle.properties 中的 isUserModule 爲 true, 這時在 KotlinMall 的 AndroidManifest.xml 中,註冊 UserCenter 模塊中的 RegisterActivity 並作爲啓動頁。 
        KotlinMall的AndroidManifest.xml
        運行 App 後發現:在 KotlinMall 中顯示了 UserCenter 模塊中的 Activity,這說明也是正確的。 
        KotlinCenter運行時截圖

總結

        至此,Android 搭建多模塊已經完成。我們可以通過 " isUserModule = false / true " 來設定對項目進行單獨運行還是一起運行。 
        當 isUserModule = true 時,UserCenter 模塊是無法單獨運行的了;
        當 isUserModule = false 時,兩個模塊都能單獨運行,但互不相通。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章