MVVMFrame

Project Url: jenly1314/MVVMFrame
Introduction: 🏰 MVVMFrame for Android 是一个基于 Google 官方推出的 Architecture Components dependencies (Lifecycle,LiveData,ViewModel,Room)构建的快速开发框架,从此构建一个 MVVM 模式的项目变得快捷简单。
More: Author   ReportBugs   
Tags:

Image

Download JitPack CI CircleCI License Blog QQGroup

MVVMFrame for Android 是一个基于 Google 官方推出的 Architecture Components dependencies (Lifecycle,LiveData,ViewModel,Room)构建的快速开发框架。有了 MVVMFrame 的加持,从此构建一个 MVVM 模式的项目变得快捷简单。

架构

Image

Android version

引入

Maven:

<dependency>
  <groupId>com.king.frame</groupId>
  <artifactId>mvvmframe</artifactId>
  <version>1.1.0</version>
  <type>pom</type>
</dependency>

Gradle:

//AndroidX 版本
implementation 'com.king.frame:mvvmframe:1.1.0'

//Android 版本
implementation 'com.king.frame:mvvmframe:1.0.2'

Lvy:

<dependency org='com.king.frame' name='mvvmframe' rev='1.1.0'>
  <artifact name='$AID' ext='pom'></artifact>
</dependency>

引入的库 (具体对应版本请查看Versions

    //support
    compileOnly deps.support.appcompat

    //retrofit
    api deps.retrofit.retrofit
    api deps.retrofit.gson
    api deps.retrofit.converter_gson

    //lifecycle
    api deps.lifecycle.runtime
    api deps.lifecycle.extensions
    annotationProcessor deps.lifecycle.compiler

    //room
    api deps.room.runtime
    annotationProcessor deps.room.compiler

    //dagger
    api deps.dagger.dagger
    api deps.dagger.android
    api deps.dagger.android_support
    annotationProcessor deps.dagger.android_processor
    annotationProcessor deps.dagger.compiler

    //log
    api deps.timber
如果 Gradle 出现 compile 失败的情况,可以在 Project 的 build.gradle 里面添加如下:(也可以使用上面的 GitPack 来 complie)
allprojects {
    repositories {
        maven { url 'https://dl.bintray.com/jenly/maven' }
    }
}

示例

集成步骤代码示例 (示例出自于app中)

Step.1 启用 DataBinding,在你项目中的 build.gradle 的 android{}中添加配置:

dataBinding {
    enabled true
}

Step.2 自定义全局配置(继承 MVVMFrame 中的 FrameConfigModule)

/**
 * 自定义全局配置
 * @author <a href="mailto:jenly1314@gmail.com">Jenly</a>
 */
public class ConfigModule extends FrameConfigModule {
    @Override
    public void applyOptions(Context context, com.king.frame.mvvmframe.di.module.ConfigModule.Builder builder) {
        builder.baseUrl(Constants.BASE_URL)//TODO 配置 Retrofit 中的 baseUrl
                .retrofitOptions(new RetrofitOptions() {
            @Override
            public void applyOptions(Retrofit.Builder builder) {
                //TODO 配置 Retrofit
                //如想使用 RxJava
                //builder.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            }
        })
        .okHttpClientOptions(new OkHttpClientOptions() {
            @Override
            public void applyOptions(OkHttpClient.Builder builder) {
                //TODO 配置 OkHttpClient
            }
        })
        .gsonOptions(new GsonOptions() {
            @Override
            public void applyOptions(GsonBuilder builder) {
                //TODO 配置 Gson
            }
        });
    }
}

Step.3 在你项目中的 AndroidManifest.xml 中通过配置 meta-data 来自定义全局配置

<!-- MVVMFrame 全局配置 -->
<meta-data android:name="com.king.mvvmframe.app.config.ConfigModule"
           android:value="FrameConfigModule"/>

Step.4 用你项目的 Application 继承 MVVMFrame 中的 BaseApplication

/**
 *  MVVMFrame 框架基于 Google 官方的 Architecture Components dependencies 构建,在使用 MVVMFrame 时,需遵循一些规范:
 *  1.你的项目中的 Application 中需初始化 MVVMFrame 框架相关信息,有两种方式处理:
 *      a.直接继承本类{@link BaseApplication}即可;
 *      b.如你的项目中的 Application 本身继承了其它第三方的 Application,因为 Java 是单继承原因,导致没法继承本类,可参照{@link BaseApplication}类,
 *      将{@link BaseApplication}中相关代码复制到你项目的 Application 中,在相应的生命周期中调用即可。
 *
 * @author <a href="mailto:jenly1314@gmail.com">Jenly</a>
 */
public class App extends BaseApplication {

    @Override
    public void onCreate() {
        super.onCreate();
        ApplicationComponent appComponent = DaggerApplicationComponent.builder()
                .appComponent(getAppComponent())
                .build();
        //注入
        appComponent.inject(this);

    }


}

Kotlin Demo

更多使用详情,请查看app中的源码使用示例或直接查看API 帮助文档

版本记录

v1.1.0:2019-7-22

  • 更新 Dagger 至 v2.23.2
  • 更新 Gradle 至 v5.1.1
  • 完全迁移至 AndroidX 版本

v1.0.2:2019-7-22

  • 更新 Dagger 至 v2.19
  • 为迁移至 AndroidX 做准备(下一版本将直接发布 AndroidX 版)

v1.0.1:2019-7-9

  • Retrofit 更新至 v2.6.0

v1.0.0:2018-12-12

  • MVVMFrame 初始版本

赞赏

如果您喜欢 MVVMFrame,或感觉 MVVMFrame 帮助到了您,可以点右上角“Star”支持一下,您的支持就是我的动力,谢谢 :smiley:

您也可以扫描下面的二维码,请作者喝杯咖啡 :coffee:

关于我

Name: Jenly

Email: jenly1314#gmail.com / jenly1314#vip.qq.com

CSDN: jenly121

博客园: jenly

Github: jenly1314

加入 QQ 群: 20867961

Apps
About Me
Google+: Trinea trinea
GitHub: Trinea