1. 程式人生 > >android studio 搭建元件化專案框架

android studio 搭建元件化專案框架

由於之前專案的冗餘功能和程式碼增多,讓app的執行bug頻出以及維護成本和維護難度的增加。公司領導不得不下定決心重新做一款app,把一些主要的功能從舊的app中剝離出來梳理分類,重新做一款便於維護,耦合性低的app。經過調研公司領導決定搭建元件化專案框架。
由於元件化的使用比較廣泛。元件化的優點道長也就不多說了,個人認為元件化最重要的優點在於耦合性低,以後對每個模組可以單獨維護而不影響其他功能。對於已經存在的功能的上線,下線,調節,比較靈活。
經過4個月的奮戰,期間與產品,伺服器之間的交流,討論甚至爭吵最後都有了結果。可以對比一下我們之前的專案架構與現在的專案架構:

  • 之前的專案架構,功能模組和工具模組相互摻雜在一塊,程式碼呼叫混亂


    這裡寫圖片描述

  • 現在的專案架構,功能模組與工具模組被分類,模組之間通過路由呼叫
    這裡寫圖片描述

一、準備

元件化讓app有了更大的功能承載力和更低的專案維護成本。也讓app有了更多的可能。元件話框架的搭建需要準備一些東西。

  • 一個穩健的伺服器用來存放程式碼,這裡道長用的是gitHub

  • 一個簡單易用的程式碼管理工具
    我們之前使用的android studio自帶的版本管理工具就非常簡便易用,但是在元件化的工程中android studio自帶的版本管理工具就不能很好的做程式碼上傳,拉取,合併等操作。道長公司使用的是Sourcetree
    注意:Sourcetree對Mac電腦有很好的適配。如果你們的辦公電腦是Mac的話推薦使用。如果是Windows電腦的話,使用會很苦逼的(誰用誰知道,捂臉痛哭)。有其他推薦的小夥伴可以給道長留言,先謝謝了。

二、搭建

在搭建元件化專案框架之前,首先要知道殼工程、庫工程、模組工程有一個瞭解,然後對專案有一個規劃。
殼工程,一般不存放程式碼,用來引用存放庫工程與模組工程。
庫工程,用來存放工具類、base類、自定義控制元件以及第三方框架作為專案中的庫來使用。
模組工程,用來存放邏輯程式碼。

我們專案的引用關係與專案規劃大致如下:
這裡寫圖片描述

2.1 分別建立殼工程,庫工程,模組工程

2.1.1建立殼工程並上傳到gitHub

如果不知道如何把專案上傳到gitHub可以去翻一下道長之前的部落格:github:上傳專案與刪除專案

2.1.2建立庫工程,模組工程並上傳到gitHub

注意:庫工程和模組工程是作為一個子模組新增到殼工程,子模組工程的目錄結構與普通的工程目錄結構不同。

  • 普通的目錄結構:
    這裡寫圖片描述

  • 子模組的目錄結構
    這裡寫圖片描述

子模組的目錄結構可以通過在一個普通的工程中建立子模組拿到,具體方法如下:

  • 點選Module
    這裡寫圖片描述

  • 建立子模組
    這裡寫圖片描述

  • 拿到子模組工程目錄
    這裡寫圖片描述

子模組的建立與殼工程建立不同的是在github:上傳專案與刪除專案中的上傳工程檔案這一步,殼工程上傳的是普通工程的結構目錄而庫模組和功能模組上傳的是子模組的目錄結構。
這裡寫圖片描述

把所需要的庫模組和功能模組一一建立,結果如下:
這裡寫圖片描述
模組命名方面,一般功能模組以“module_ + 模組名”命名,庫模組以“lib_ + 庫名”命名。儘量做到模組名與庫名單獨唯一。

2.2 關聯殼工程與子模組

  • 首先把殼工程拉取一份新的,然後進入Git控制檯
    這裡寫圖片描述

  • 依次輸入下列指令

git submodule add 子模組路徑 子模組名字
git status
git diff
git add .
git commit -m "add submodule"
git push origin 提到的分支

git submodule add 子模組路徑 子模組名字:關聯子模組,把子模組路徑的工程命名為子模組名字並新增到殼工程。
git status:顯示工作目錄和暫存區的狀態,防止提交不想提交的程式碼。
git diff:顯示提交和工作樹等之間的更改。
git add .:提交所有檔案。
git commit -m “add submodule”:新增提交檔案的備註為”add submodule”。
git push origin 提到的分支:把提交的程式碼推送到遠端伺服器。

  • 然後前往GitHub檢視,如下展示便為關聯正確
    這裡寫圖片描述
    注意:關聯子模組的子模組如果之前是一個單獨執行的專案,需要對這個單獨執行的專案的目錄框架進行修改。負責關聯上子模組在android studio 不能正常展示。

2.3 新增路由器

殼工程關聯完畢子模組以後就可以作為一個專案來進行開發了,但是現在每個子模組之間不能直接呼叫。我們需要新增路由器來進行模組之間的跳轉與資料交流。
這裡道長選擇的是阿里的ARouter路由框架。

  • 一般把公用第三方框架放在lib_base中
    這裡寫圖片描述

  • 在其他所有子模組中新增路由器並且引用lib_base模組
    這裡寫圖片描述
    這裡寫圖片描述

2.3.1 路由器的使用

路由器的使用不是這篇部落格的重點,以後會有專門的一篇部落格分享路由器的使用,這裡只做簡單介紹。在要跳轉的介面新增如下程式碼:
這裡寫圖片描述
然後無參跳轉,程式碼如下:
這裡寫圖片描述

2.4 配置專案

專案新增完成後我們還要做一些配置。

2.4.1 庫模組的配置

  • 把gradle中的apply plugin: ‘com.android.application’修改成apply plugin: ‘com.android.library’

  • 把manifest中的程式碼作如下修改
    這裡寫圖片描述

2.4.2 功能模組中的配置

  • 把gradle中的apply plugin: ‘com.android.application’做如下修改
    這裡寫圖片描述

  • 在gradle.properties中新增如下程式碼
    這裡寫圖片描述

  • 在專案中新增如下檔案,用來在模組開發時能夠單獨打包
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述

三、Sourcetree使用

最後道長不得不吐槽一下Sourcetree對Windows使用者的不友好了,
這裡寫圖片描述

這個就是Sourcetree的拉取介面,使用者只要把程式碼庫的路徑貼在第一行就可以了,當然如果不滿意可以修改第二行與第三行。
注意使用Sourcetree 拉取程式碼需要使用帳號登入,使用帳號登入,使用帳號登入,這個帳號不是git帳號,而是需要單獨註冊的bitbucket的賬戶
這裡寫圖片描述

而且使用Sourcetree合併程式碼和解決衝突十分棘手,Windows平臺並不能新增第三方合併軟體,例如Beyond Compare 4。如果有小夥伴有簡便易用的程式碼管理工具一定要告訴一下道長。
到這裡道長大概已經分享完了,有一些細節可能沒有說道,小夥伴們可以去我的gitHub圍觀一下。傳送門在此:GitModuleDemo。希望這篇文章能夠解決你的問題。