modularization 安卓組件化demo
可根據(jù)自己需求修改模塊,感謝star issues follow :)
項(xiàng)目簡(jiǎn)介及計(jì)劃:
1:使用 ARouter漱办,ButterKnife,AFrame(rxjava2、okhttp3腾仅、base封裝漫萄、常用util)
2:每個(gè)module結(jié)構(gòu)不限宋梧,可MVVM/MVP刨疼,可不同網(wǎng)絡(luò)框架
3://TODO 組件化(module-share)、多進(jìn)程(webview/push)瘪板、多進(jìn)程通信吴趴、插件下發(fā)及加載(module-main的SplashActivity處理)
組件化控制:
project/gradle.properties:
(組件化開關(guān) toggle)
isBuildAll=true
isLibraryMain=true
isLibraryHome=true
isLibraryLogin=true
isLibraryMine=true
isLibraryProject=true
isLibraryRegister=true
isLibraryWeb=true
project / build.gradle :
(版本,簽名,依賴)
buildscript {
ext {
signigConfig = [
storePassword: 'xxx',
keyAlias : 'xxx',
keyPassword : 'xxx'
]
var = [
gradle : "3.0.1",
compileSdkVersion : 26,
buildToolsVersion : "26.0.2",
minSdkVersion : 15,
targetSdkVersion : 26,
versionCode : 1,
versionName : "1.0"
]
versions = [
'support_library' : '26.1.0',
'diff_adapter' : '0.2.1',
'refresh_layout' : '1.0.5.1',
'refresh_header' : '1.0.3',
'aframe' : '0.0.8',
'leakcanary' : '1.5.4',
'butterknife' : '8.5.1',
'dex' : '1.0.3',
'arouter_api' : '1.3.1',
'arouter_compiler' : '1.1.4'
]
}
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:${var.gradle}"
classpath "com.jakewharton:butterknife-gradle-plugin:${versions.butterknife}"
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
模塊介紹:
1:app
1:空殼app,編譯項(xiàng)目
2:AndroidManifest 負(fù)責(zé)項(xiàng)目主進(jìn)程等配置
3:application 初始化篷帅,加載配置
2:library-common
中間件
1:作為公共library 史侣,其他 module 根據(jù)情況依賴
2:作為 common ,封裝一些公共的行為和資源供 module 使用:
bean 目錄 網(wǎng)絡(luò)請(qǐng)求/操作數(shù)據(jù)庫(kù)的公共容器
config 目錄 版本/服務(wù)器/路由 配置信息
utils 目錄 常用工具類
widget 目錄 自定義控件魏身,大部分模塊在使用
base 中間層
interface
... 根據(jù)項(xiàng)目需求自行擴(kuò)展 ...
3:module-main
1:組件入口/宿主加載插件入口 SplashActivity MainActivity ..
2:MainActivity 里通過(guò) ARouter 初始化 的 3 個(gè) 不同模塊的 Fragment (職責(zé)分離)(ARouter通過(guò)反射 newInstance出Fragment對(duì)象實(shí)例)
3:使用 TabView ( 通過(guò)繼承 TextView 替代 TextView+ImageView) 降低底部導(dǎo)航的布局層次惊橱,減少 GPU 過(guò)度繪制
4:配置 gradle 和 MainApp 配置 使模塊獨(dú)立運(yùn)行(單獨(dú)運(yùn)行時(shí)通過(guò) toogle 開關(guān) 和 ARouter 解耦合)
4:module-home
1:ImageLoader 的使用(基于Glide4.0 的封裝)
2:AFrame 的用法
3:MVP 的用法
4:ARouter 配置 HomeFragment 供 module-main 的 MainActivity 使用
//TODO