組件化的優勢
組件化簡單的說就是:能任意使用項目中的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在自己的兩個清單文件中,對應配置,不要遺漏。