Android元件化探索
文章目錄
元件化的優勢
元件化簡單的說就是:能任意使用專案中的module來合併一個app.
實際開發中,遇到業務很複雜,且業務線較多時,我們往往會將專案模組化。但是有時候僅僅模組化,依然解決不了更深城的需求,舉個栗子來說下:
剛進專案組時,我們開發的專案,主要包含IM、朋友圈和豬行業(養殖、買賣)的一個app.後來業務擴充套件,我司行業也在變多,有了漁、田、驢、狐狸、蛋、企、柑橘…有些行業公司組織分公司運營,有些行業外包,這時就衍生出一堆app了,如果不考慮元件化,想想都頭大…
元件化的步驟
1.建立config.gradle,在專案下的build.gradle中引入
apply from: "config.gradle"
config.gradle簡單程式碼
ext {
//版本統一配置
compileSdkVersion = 27
minSdkVersion = 17
targetSdkVersion = 27
supportVersion = '27.1.1'
//my_view是否為module
myViewIsModule = true
}
2.module中根據引數myViewIsModule 的值,配置為application或者library.注意統一繼承baseLib,有共性的庫都放在baseLib中引用。
如果module作為application,我們需要額外配置一個清單檔案和application。在module的bulid.gradle中區分引用不同的清單檔案。這裡我們把作為module時,建立的清單檔案放在main下的module檔案中。
3.不同module之間Activity跳轉傳參,通過ARouter操作。Android中預設不同module間頁面不可跳轉,藉助阿里的路由框架,可以完成任意跳轉。
4.在app的build.gradle 中配置需要整合的module.
if (Boolean.valueOf(rootProject.ext.myViewIsModule)) {
implementation project(':review_my_view')
}
每個module配置一個引數,這樣就可以自由打包module了。
元件化的注意事項
1.config.gradle中配置的引數,每次修改後需要同步,方可生效。
2 資原始檔的衝突。類名、xml、drawable等名稱都不可重複,建議不同module下資源,加上module名作為字首。
3.baseLib中配置共性的混淆檔案,每個module的proguard-rules.pro中配置對應自己的混淆內容,整合打包時會自動合併。
4.許可權。baseLib中配置常見的許可權,每個module在自己的兩個清單檔案中,對應配置,不要遺漏。