Arms是一个整合了大量主流开源项目的Android Mvp快速搭建框架

概述

MVPArms是一个整合了大量主流开源项目的Android Mvp快速搭建框架,其中包含Dagger2Retrofit,Rxjava以及Rxbinding,RxCacheRx系三方库,并且提供UI自适应方案,本框架将它们结合起来,并全部使用Dagger2管理并提供给开发者使用,使用本框架开发你的项目就意味着你已经拥有一个MVP+Dagger2+Retrofit+Rxjava项目,发布到github上可以非常轻松的拿star(在简历中展露头脚),我提供一切迭代和维护成本你只需要在Readme里面注明框架出处,还不赶快行动?

特性

  • 自动生成MVP,Dagger2相关类
  • 版本更新
  • 更新日志
  • 常见issues
  • 通用框架,适合所有类型的项目,支持大型项目的开发,Demo的包结构直接可以拿来用
  • 全部使用Dagger2管理(将所有模块使用Dagger连接起来,绝不是简单的使用)
  • 大量使用Rxjava
  • 修改包名(common包不要修改)后就可以直接使用,快速接入(老项目接入请按下面的步骤)
  • 全部UI自适应
  • 图片加载类ImageLoader使用策略模式和建造者模式,轻松切换图片加载框架和功能扩展
  • Model层提供Retrofit API和RxCache,是否使用缓存自行选择
  • 全局http Request(请求参数,headersResponse(服务器返回的结果,headers,耗时)信息监听,可解析json后根据状态码做相应的全局操作
  • 全局Rxjava错误处理,错误后自动重试,捕捉整个应用的所有错误

框架结构

17154726_0KsC.png

包结构

17154731_2wvb.png

开发须知

  • 开发者需要具有一定的Android开发能力
  • 开发者必须有使用Dagger2,Rxjava,Retrofit的经验,没使用过也必须了解,不然很难使用

Libraries简介

  1. MvpGoogle官方出品的Mvp架构项目,含有多个不同的架构分支(此为Dagger分支).
  2. Dagger2Google根据Square的Dagger1出品的依赖注入框架,通过apt动态生成代码,性能优于用反射技术依赖注入的框架.
  3. Rxjava提供优雅的响应式Api解决异步请求.
  4. RxAndroid为Android提供响应式Api.
  5. Rxlifecycle在Android上使用rxjava都知道的一个坑,就是生命周期的解除订阅,这个框架通过绑定activity和fragment的生命周期完美解决.
  6. RxbindingJakeWharton大神的View绑定框架,优雅的处理View的响应事件.
  7. RxCache是使用注解为Retrofit加入二级缓存(内存,磁盘)的缓存库
  8. RetrofitSquare出品的网络请求库,极大的减少了http请求的代码和步骤.
  9. Okhttp同样Square出品,不多介绍,做Android都应该知道.
  10. Autolayout鸿洋大神的Android全尺寸适配框架.
  11. GsonGoogle官方的Json Convert框架.
  12. ButterknifeJakeWharton大神出品的view注入框架.
  13. Androideventbus一个轻量级使用注解的Eventbus.
  14. TimberJakeWharton大神出品Log框架,内部代码极少,但是思想非常不错.
  15. Glide此库为本框架默认封装图片加载库,可参照着例子更改为其他的库,Api和Picasso差不多,缓存机制比Picasso复杂,速度快,适合处理大型图片流,支持gfit,Fresco太大了!,在5.0一下优势很大,5.0以上系统默认使用的内存管理和Fresco类似.
  16. Realm速度和跨平台性使它成为如今最火的数据库,美中不足的就是so库太大
  17. LeakCanarySquare出品的专门用来检测AndroidJava的内存泄漏,通过通知栏提示内存泄漏信息
  18. RxErroHandlerRxjava错误处理库,可在出现错误后重试

 

1 开发准备

此框架适合自己做定制修改,所有暂时不上传至JcenterMaven,请自行下载或clone

 

1.1 导入框架

compile project(':arms')

 

1.2 引用config.build

本框架提供一个引用大量第三方库的config.gradle文件,用于第三方库版本管理,将config.gradle复制进根目录,并在项目的顶级build.gradle中引用它

// Top-level build file where you can add configuration options common to all sub-projects/modules.
apply from: "config.gradle" //这里表示引用config.gradle文件
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
 the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }//这里要使用rxcahche指定的仓库
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}


 

1.2.1 使用config.build

因为在顶级build.gradle中引用了它,所以在整个项目的所有build.gradle中都可以使用rootProject.xxx来使用它里面的内容

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile rootProject.ext.dependencies["junit"]
    compile rootProject.ext.dependencies["support-v4"]
    compile rootProject.ext.dependencies["gson"]
    compile rootProject.ext.dependencies["appcompat-v7"]
    compile rootProject.ext.dependencies["cardview-v7"]
    compile rootProject.ext.dependencies["autolayout"]
    compile rootProject.ext.dependencies["butterknife"]
    compile rootProject.ext.dependencies["androideventbus"]
    }

也可以使用它来管理一些项目的信息,这样有多个module也可以直接使用一个信息

android {
    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
    buildToolsVersion rootProject.ext.android["buildToolsVersion"]
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        minSdkVersion rootProject.ext.android["minSdkVersion"]
        targetSdkVersion rootProject.ext.android["targetSdkVersion"]
        versionCode rootProject.ext.android["versionCode"]
        versionName rootProject.ext.android["versionName"]
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

 

1.3 依赖Dagger2

本框架全部使用Dagger2管理,所以必须依赖Dagger2,找到app的build.gradle,加入如下代码

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'//使用apt插件

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'//使用apt
    }
}


dependencies {
      apt rootProject.ext.dependencies["dagger2-apt-compiler"]//依赖apt插件
    provided rootProject.ext.dependencies["javax.annotation"]//dagger2必须依赖jsr250 annotation
}

 

1.4 配置AndroidManifest

 

1.4.1 添加权限
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值