• Stars
    star
    242
  • Rank 167,048 (Top 4 %)
  • Language
    Kotlin
  • License
    MIT License
  • Created about 6 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

☘☘Relax 基于Kotlin语言编写的一套组件化框架,不紧整体组件化、内部也高度组件化🎋你可配置MVP、MVVM的开发模式、也可以配置所需要的业务组件🍁🍁

Language SDK License

Relax 基于Kotlin语言编写的一套组件化框架,内部可以实现灵活的配置

Relax is a android frame by Component Frame

语言

Kotlin 使用技巧、里面是我踩过的各种坑(>_<)

架构模式

1. module

  业务层,分解成独立的模块

  module-business-news   module-business-weather   module-business-welfare   module-business-four

  每个模块内部可以实现插件化跟细粒度小功能

2. relax-business-component

  基础业务层和可变的第三方业务(比如地图封装、IM封装、日志上传封装、友盟统计封装、Bugly封装,这些业务我们
  情景1:可能实现方式会变(如图片加载之前用glide,现在想用Fresco,所以通过接口统一实现;
  情景2:有些业务可能在不同的App宿主中不需要,所以提供动态配置来减少安装包体积))
  所以针对第三方业务实现,通过分别实现不同的依赖库封装在BusinessFactory中,同时通过factoryinterface提供
  统一接口

3. relax-data-component

  数据层,提供业务数据,包含网络数据、本地数据,SP数据

4. relax-core-component

  基础组件层, 一些框架必须要用的library、核心的架构实现、如mvvm、mvp基础架构、自定义UI组件等

5. relax-dependents

  公共依赖集合,提供统一配置

6. 统一配置gradle.properties

### 库和应用两种模式间切换
### 只有app 为false 其他模块才可以设置true
relaxBusinessPlugin_isApp = false
relaxBusinessNews_isApp = false
relaxBusinessWeather_isApp = true
relaxBusinessWelfare_isApp = false
relaxBusinessComponent_isApp= false
### 启用检查代码 启用会牺牲打包时间
isCheckCode = false
### 动态配置减少打包体积
glideEnable = true
picassoEnable = false
isMVVM = true
isMVP = false
isApp = false

架构图

项目内容

1. 实现组件化,可以分层调试,单独模块调试;

2. 支持 checkstyle,pmd,findBugs对代码静态扫描,虽然目前只支持Java检查,但开发过程中还是会用到一些Java代码和xml的检查;

3. basic-component层 添加MVVM架构支持;

4. basic-component层,添加MVP架构支持;

5. 根据配置动态选择打包架构;

6. 封装kotlin版本的权限检查,使用更简单;

7. 将Application放到business-component层,因为我们要在这一层做基础业务组件开发,会全局初始化一些组件;

8. 封装data层接口,对外通过DataServiceManager提供统一接口(LocalDataService和NetDataService),在Service

  内部我们可以通过Retrofit、OkHttp、Volley等来实现网络请求,(项目核心使用rxjava来完成数据流,如果用其他网络框架,也尽量返回Observable,来保证封装一致性)

9. 封装图片加载框架,通过ImageEngine对外提供加载图片引擎,通过ILoader对底层提供实现接口

10. 封装插件化框架通过PluginManager进行管理插件

  例子:module-business-plugin模块就是用插件化实现的,具体插件式项目中的RelaxPluginDemo

11. 引入koin来解决kotlin依赖注入,更加方面,里面没有反射、代码生成

12. 封装权限处理 AndroidPermission

13. 封装多个值同时不为Null的判断,避免繁琐嵌套 CheckNullUtil

Libraries Used

  • Lifecycles - Create a UI that automatically responds to lifecycle events.
  • LiveData - Build data objects that notify views when the underlying database changes.
  • Navigation - Handle everything needed for in-app navigation.
  • Room - Access your app's SQLite database with in-app objects and compile-time checks.
  • ViewModel - Store UI-related data that isn't destroyed on app rotations. Easily schedule asynchronous tasks for optimal execution.
  • WorkManager - Manage your Android background jobs.
  • UI - Details on why and how to use UI Components in your apps - together or separate
  • Third party
    • Glide for image loading
    • Rxjava for Reactive Programming
    • ARouter A framework for assisting in the renovation of Android app componentization
    • Retrofit A restful client
    • EventBus An Android event publish/subscribe lightweight framework
    • Dagger a fully static, compile-time dependency injection framework for both Java and Android.
    • GSON Tool class for converting Java objects to Json strings and Json strings to objects
    • LeakCannary Is the main tool for Android to find memory leaks.
    • Aspect optimize your contact center performance through improved customer service and efficiency.
    • Koin A pragmatic lightweight dependency injection framework for Kotlin developers. Written in pure Kotlin using functional resolution only: no proxy, no code generation, no reflection!

开发过程错误总结

More Repositories

1

DataStructure

💋💋数据结构、算法总结、学习算法的时间复杂度、空间复杂度、分析算法特点以及应用、Java面试难题、Android面试难题
Java
1,110
star
2

S-MVP

🔥🔥优化版MVP,使用注解泛型简化代码编写,使用模块化协议方便维护,APT过程使用注解解析器利用JavaPoet🌝完成重复模块的编写,利用ASpect+GradlePlugin 完成横向AOP编程+Javassist动态字节码注入+Tinker实现热修复+Retrofit实现优雅网络操作+RxJava轻松玩转数据处理
Java
1,084
star
3

GradlePluginDevelop

💍Gradle 执行流程、什么叫DSL、领域专用语言、Gradle常见用法、Gradle高级插件用法、Gradle对Android优化、结合Javassist使用给上一层楼以及Gradle开发中的遇到的问题
Groovy
465
star
4

RecordVoiceView

🍭自定义声音波纹,适合作录音应用的开发,模仿iPhone录音效果,模仿小米录音效果,其他录音效果录音效果
Java
302
star
5

DeepLearn-Tensorflow

✨✨开始迈向人工智能、机器学习、深度学习,学习主流的深度学习框架Tensorflow之旅
Python
183
star
6

ComputerBookShare

📚📚计算机电子图书分享🐬,欢迎大家分享自己的电子书到这里来,让大家寻找资源不那么苦恼🐳,让大家共同成长学习💥,资源长期有效
164
star
7

KAdapter

封装Kotlin版本RecyclerView Adapter,使用DSL创建Adapter,体验不一样的简单
Kotlin
44
star
8

KotlinNote

Kotlin 学习笔记
Kotlin
6
star
9

AndroidPluginFramework

Android插件化开发框架、DexClassLoader
Java
5
star
10

JNI_NDK

JNI技术、NDK技术、HOOK技术、视频直播技术
C
5
star
11

EventDriver

发送事件,不需要关心接收者的生命周期
Kotlin
4
star
12

ComponentDevelopment

组件化开发框架
Java
3
star
13

JavaPoetSample

JavaPoet的一个简单例子
Java
1
star
14

CameraTextureView

通过TextureView 自定义相机
Kotlin
1
star
15

VolleyOKhttp

Java
1
star
16

TechBox

upload Techbox
Java
1
star
17

DoubleProcessKeep

双进程保护
Java
1
star
18

AndroidService

Service apk开发
Java
1
star