基於CC的Android MVVM 元件化實現
阿新 • • 發佈:2018-12-29
基於CC的Android MVVM 元件化實現
MVVM
網上很多介紹MVVM的文章,在此不做闡述
元件化
常用元件化解決方案
1. CC
2. 得到DDComponentForAndroid
- Android徹底元件化方案實踐
- 元件化設計思路 淺談Android元件化
- 原理解釋文章Android徹底元件化方案實踐
- demo解讀文章Android徹底元件化demo釋出
3. ModularizationArchitecture
4. 阿里Arouter
5. 聚美元件化方案
6. ActivityRouter
以上是一些常用的元件化解決方案,以及一些相關的文章
這六種元件化方案的使用對比:
github.com/luckybilly/…通過對比最終採用CC框架進行元件化開發
無圖無真相
下面開始擼程式碼
一. 建立宿主專案
這一步和普通的專案建立方式一樣,
File-> New-> NewProject 修改build.gradle檔案
ext.mainApp = true //設定為true,表示此module為主app module,一直以application方式編譯
apply from: rootProject.file('mufeng-cc-settings.gradle')
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion rootProject.compileVersion
defaultConfig {
applicationId "com.mufeng.mufengdiary"
minSdkVersion rootProject.minVersion
targetSdkVersion rootProject.compileVersion
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
dataBinding {
enabled = true
}
}
複製程式碼
二. 建立基礎庫元件
在專案中是基於MVVM設計模式 + Databinding + Kotlin 以及一些常用的基礎庫來封裝
三. 引入CC元件化建立Module模板
這一步是可選的,此模板是根據AndroidStudio的專案建立模板來改造的,可以快速的構建出CC元件化的Module元件
模板下載地址: 點我下載
此模板的使用方法:
- 下載此模板檔案
- 解壓檔案到目錄: \android-studio\plugins\android\lib\templates\gradle-projects中
- 重啟AndroidStudio
注: 此建立模板同學們也可以自行修改,修改完成後,一定要重啟才能生效
好! 模板外掛安裝成功
四. 根據元件模板來建立Module模板
直接上圖
元件建立好之後,需要做以下處理
- 新增元件啟動Activity
- 新增元件Component實現IComponent介面,並實現兩個方法 關於CC的用法,請檢視CC使用說明
- 在宿主元件的build.gradle檔案下新增
dependencies {
addComponent 'login'
}
複製程式碼
至此實現了簡單嗎元件化開發
原始碼地址: github.com/hanlin19900…
專案中用到的技術知識
- MVVM
- Databinding
- kotlin
- CC元件化解決方案
- AndroidX
- RxJava全家桶
- RxBinding
- Rxpermissions
- ViewModel
- LiveData
- AndroidAutoSize(螢幕適配方案)
- Autodispose
- BottomBarLayout
- Xpopup
- RecyclerView-Adapter