modularization 安卓组件化demo

modularization 安卓组件化demo

可根据自己需求修改模块,感谢star issues follow :)

项目简介及计划:

1:使用 ARouter,ButterKnife,AFrame(rxjava2、okhttp3、base封装、常用util)
2:每个module结构不限,可MVVM/MVP,可不同网络框架
3://TODO 组件化(module-share)、多进程(webview/push)、多进程通信、插件下发及加载(module-main的SplashActivity处理)

组件化控制:

project/gradle.properties:

(组件化开关 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,编译项目
2:AndroidManifest 负责项目主进程等配置
3:application 初始化,加载配置
2:library-common
中间件
1:作为公共library ,其他 module 根据情况依赖
2:作为 common ,封装一些公共的行为和资源供 module 使用:
        bean   目录 网络请求/操作数据库的公共容器
        config 目录 版本/服务器/路由 配置信息
        utils  目录 常用工具类
        widget 目录 自定义控件,大部分模块在使用
        base   中间层
        interface
        ... 根据项目需求自行扩展 ...

3:module-main
1:组件入口/宿主加载插件入口  SplashActivity  MainActivity ..
2:MainActivity 里通过 ARouter 初始化 的 3 个 不同模块的 Fragment (职责分离)(ARouter通过反射 newInstance出Fragment对象实例)
3:使用 TabView ( 通过继承 TextView 替代 TextView+ImageView) 降低底部导航的布局层次,减少 GPU 过度绘制
4:配置 gradle 和 MainApp 配置 使模块独立运行(单独运行时通过 toogle 开关 和 ARouter 解耦合)
4:module-home
1:ImageLoader 的使用(基于Glide4.0 的封装)
2:AFrame 的用法
3:MVP 的用法
4:ARouter 配置 HomeFragment  供 module-main 的 MainActivity 使用

//TODO

5:module-project
6:module-mine
7:module-login
8:module-register
9:module-web
10:module-share
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android组件化项目地址:Android组件化项目AndroidModulePattern Android组件...
    半灬边灬天阅读 2,964评论 4 37
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,826评论 25 709
  • 明天是29号 周四!后天就是30号—周五啦!后天之后就要开始为期三天的元旦假期了。元旦三天说长不长,说短也不短,我...
    a07d2a0543bb阅读 379评论 0 0
  • 我的世界很小 哪怕尽了全力 还是有无数的地方是远方 被海豚追逐的薄荷岛 坐上门板当火车的柬埔寨 悬崖上色彩斑斓的五...
    哀慕熙荣阅读 101评论 0 1
  • 幼稚时的我,只是一个吃货,量大而不精,贪心而不准,那时的我,根本没用心了解过美食背后蕴藏的宇宙。有幸的是,去年一部...
    糖糖六点阅读 445评论 0 2