當前位置:
首頁 > 最新 > Android 奇技淫巧:多個 Project 代碼同時引入

Android 奇技淫巧:多個 Project 代碼同時引入

背景

從開始學習編程時,老師就告訴我們設計模式、MVC等在編程中非常重要,所以一定要努力學習。在項目設計的時候,為了更好地解耦,我們往往會將每一個小模塊都設計到了獨立的module裡面,但是這樣子雖然做了拆分,卻並不能很好地在各個項目中重用它們。因此筆者做了一個更加嚴格拆分,每一個都會放在獨立的project中,這樣就可以更好地在不同的項目里重用。不僅如此,我們在打開獨立的project時,Android Studio會運行的更流暢。

每一個library在使用的時候都會被打包成aar,上傳到公司內部的伺服器,如此進行依賴就可以避免基礎庫遭到亂改。

但是使用這種方式,並不利於源碼的閱讀。因此我們需要將不同的項目引入到同一個工種中進行載入。

首先我們來看一下,使用module的時候,是如何引入的,如下:

現在我們需要把外部工程的module也引入進來。要怎麼做呢?

如下:

使用Android Studio打開作為主工程的項目

手動打開主工程項目根目錄下的,添加module的依賴進去

給引入的module指定的路徑(項目文件的真實路徑,建議使用相對路徑)

其中,為 toolkit 的項目目錄,這個目錄下是一個完整的AS項目,可以直接打開。


按照上面的方式,我們可以在一個項目中查看所有的module的源代碼,但是,在獨立項目中,沒有源代碼,為解決依賴問題,我們會將每一個module都上傳到伺服器,使用路徑地址來進行項目依賴管理。

那麼,問題來了。我們將所有的源代碼都引入到了一個項目中,但是代碼間的跳轉還是使用的中下載下來的代碼庫。

為了解決這個問題,我們可以定義一個變數來處理,判斷當前module是否是在獨立的項目中,如果是在獨立的項目中,使用庫的依賴,如果是以代碼的形式引入整個項目,則直接使用代碼庫的依賴。

定義變數

在每一個獨立的項目中,在文件中添加屬性,如下:

讀取的值

在文件中,讀取isAlone屬性,如果為true,依賴maven中的library, 反之依賴project中的。代碼如下:

在添加依賴的時候,可以使用代碼add的方式,當然也可以直接將不同的dependences放在不同的文件中,然後分情況依賴不同的文件,如下:

不僅是依賴可以通過groovy代碼進行添加,Android的其它屬性也可以添加,Demo如下:

到現在,我們的問題基本解決,但是我追求完美,還一個小瑕疵需要解決。

Android Studio有一個VCS的模塊,他可以快速的在AS中處理相關的邏輯。我都會使用他的Modify/New/Rename/Delete/Revert等功能。但是AS默認只能處理一個項目。所以,導致我們引入的其它Project中的Module不支持git的特點,使用起來非常的不方便。經過一系列的查找,終於找到解決方案。

一個intellij idea項目,在其根目錄下都有一個的文件夾,這個裡面存儲著整個項目的配置文件,當然也包括git的, 文件名為, 默認內容如下:

當然,我們需要更改這個文件,將我們的toolkit_lib文件夾加入到裡面,修改過後如下:

PS: toolkit_lib 和當前引入的項目在同一個文件夾下面,所以使用PROJECT_DIR相對路徑,來指定項目目錄。當然,這個地方的directory, 你也可以使用絕對路徑來指定。


我們有多個項目需要引入,但是部分項目,沒有修改的需求,並沒有要把項目引入的需求。所以,使用一個變數,來管理所有的項目,使用起來,略顯靈活度不夠。所以,我們將每一個項目按照單獨properties來讀取其狀態,當其中一個項目的dependencies要使用maven,我們只需要將其對應的變數值設置為true或者刪除掉。讀取屬性的代碼如下:

當作為module引入的時候,只需要在主Project中的文件裡面加入對應值。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 大羅說事 的精彩文章:

TAG:大羅說事 |