- 中小型公司或个人项目快速开发的良好脚手架,经过实际项目检验,目前持续维护更新中
考虑到有的朋友可能只是想看部分模块,近期准备把各个模块拆分出来,方便大家使用 拆分进度
模块 | 进度 | 新地址 |
---|---|---|
bus | 已完成 | ElegantBus |
- 模版模式,自动生成大部分重复代码,提供大部分业务情景Base类
- 简单明了的 M-V-VM 模式
- 底层逻辑(出错、loading显示、初始化页面、刷新、加载更多等)统一处理,只需要处理业务逻辑和画子布局
- 不依赖后段开发进度可以直接测试前段代码显示逻辑
- 模块化编程,需要的模块直接引用就可以
- 创建本地仓库和远端仓库,提高编译效率
- 清晰明了的架构和底层依赖图,方便合理组合选用
- 良好的UI反馈机制,尽量做到每一个点击都能给用户很好的反馈
- 其他
技术 | 说明 |
---|---|
M-V-VM | Model和View通过VM进行绑定的设计模式 |
dataBinding | 数据绑定实现M-V-VM设计模式 |
APT | Android注解处理工具进行代码生成 |
LiveData | 生命周期绑定的数据对象 |
Room | 数据库 |
PageList & Paging | 数据分页 |
Retrofit | 网络请求 |
channel | 多渠道打包 |
multi module | 多模块依赖、模块化 |
version ext | 统一变量进行版本管理 |
glide | 图片加载通过bindingAdapter统一处理 |
easy permissions | 权限问题统一处理 |
lazy loading | Fragment懒加载 |
Swipe Back | 侧滑返回 |
... | 其他第三方依赖处理常规问题 |
模块 | 说明 | 详细说明 |
---|---|---|
app-demo | 模块使用示例 | 详细说明 |
app-core | 利用dataBinding实现M-V-VM底层BASE模块 沉浸式体验布局 侧滑返回 懒加载等 | 详细说明 |
marquee-core | 滚动广告布局 | 详细说明 |
update-core | 应用升级更新套件 | 详细说明 |
blues-core | crash捕获,内部集成bugly | 详细说明 |
banner-core | 滚动播放广告组件 | 详细说明 |
cat-core | 网络数据监听,快速定位bug原因 | 详细说明 |
hybrid-core | 利用拦截onJsPrompt实现的混合交互方案 | 详细说明 |
image-core | 图片浏览,扫码,身份证,营业执照拍摄等照片相关 | 详细说明 |
http-core | 对retrofit封装 | 详细说明 |
http-compiler | 通过APT实现模版代码自动生成,减少重复工作量 | 详细说明 |
bus-core | 利用LiveData实现的event-bus | 详细说明 |
bus-compiler | 定义事件后,通过APT实现模版代码自动生成,减少重复工作量 | 详细说明 |
... | 其他底层工具类和UI组件 | 详细说明 |
说明:每个模块都可以单独依赖,根据下图结构,上层自动会将底层依赖进来。 例如: dependencies { implementation 'com.github.codyer.component:app-core:1.0.72' } 可以直接依赖app-core
-
本地仓库 自己开发时,可以使用本地仓库离线开发,提高编译效率
-
远程仓库 团队合作时,可以使用远程仓库
通过分支名来实现不同的依赖方式,免去了总是切换参数的麻烦,直接使用不同分支实现
-
通过包含指定名字(local)的tag或者branch 实现推送到本地仓库
-
通过包含指定名字(remote)的tag或者branch 实现依赖远程仓库
-
通过包含指定名字(component)的tag或者branch 实现排除 compiler 打出一个总组件的依赖包
-
通过包含指定名字(compiler)的tag或者branch 实现排除 component 打出一个总注解处理器的包
APT会用到调试,调试步骤如下
- 打开gradle.properties 里面的两行代码注释 org.gradle.jvmargs=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5033 -Dorg.gradle.debug=true
- 在Android Studio建立通过 edit configurations 创建 Remote Debugger。
- 在Android Studio Terminal控制台中输入gradlew --daemon来启动守护线程。 切换到新建的debugger
- 在Android Studio Terminal控制台中输入gradlew clean assembleDebug
- 单模块依赖请查看各个模块说明文件
- 整体component依赖说明如下
- 1) 在项目根目录的build.gradle中添加jitpack依赖
allprojects {
repositories {
maven { url "https://jitpack.io" } // <===添加这行
google()
jcenter()
}
}
- 2) 在应用的build.gradle中开启dataBinding并且添加依赖
android {
.
.
.
dataBinding.enabled = true
.
.
.
}
依赖所有模块方式
dependencies {
.
.
.
implementation 'com.github.codyer.component:core:1.0.66'
annotationProcessor 'com.github.codyer.component:compiler:1.0.66'
.
.
.
}
- 3) Application继承BaseApplication并在Application中初始化
.
.
.
ImagePicker.init();
HttpCore.init(this)
.withLog(true)
.withHttpCat(HttpCat.create(this))
.withHttpHeader(new HeaderParameterInterceptor())
.done();
.
.
.
- 4)具体初始化方式可以参考demo-app
- 如果运行错误可以看看是不是没有开启multiDexEnabled
1)蒲公英地址
2)[apk]可以下载代码自己编译
- Simple is Fast :简单保障快速迭代,目前为了方便,所有的模块使用了统一的版本号管理,后期稳定了也许会考虑单独的版本依赖方式
- Less is More :少即是多,用更少的技术实现更高效的开发效率,一点都不花里胡哨,每一个技术引入都是为了更高的开发效率和更低的维护成本。
- Fit is Better :最适合的才是最好的,中小型团队和大型团队开发方式会有所不同,但初衷都是为了提高效率。