3
3
![ Image] ( app/src/main/ic_launcher-web.png )
4
4
5
5
[ ![ Download] ( https://img.shields.io/badge/download-App-blue.svg )] ( https://raw.githubusercontent.com/jenly1314/MVVMFrame/master/app/release/app-release.apk )
6
- [ ![ JCenter] ( https://img.shields.io/badge/JCenter-1.1.2 -46C018.svg )] ( https://bintray.com/beta/#/jenly/maven/mvvmframe )
6
+ [ ![ JCenter] ( https://img.shields.io/badge/JCenter-1.1.3 -46C018.svg )] ( https://bintray.com/beta/#/jenly/maven/mvvmframe )
7
7
[ ![ JitPack] ( https://jitpack.io/v/jenly1314/MVVMFrame.svg )] ( https://jitpack.io/#jenly1314/MVVMFrame )
8
8
[ ![ CI] ( https://travis-ci.org/jenly1314/MVVMFrame.svg?branch=master )] ( https://travis-ci.org/jenly1314/MVVMFrame )
9
9
[ ![ CircleCI] ( https://circleci.com/gh/jenly1314/MVVMFrame.svg?style=svg )] ( https://circleci.com/gh/jenly1314/MVVMFrame )
12
12
[ ![ Blog] ( https://img.shields.io/badge/blog-Jenly-9933CC.svg )] ( https://jenly1314.github.io/ )
13
13
[ ![ QQGroup] ( https://img.shields.io/badge/QQGroup-20867961-blue.svg )] ( http://shang.qq.com/wpa/qunwpa?idkey=8fcc6a2f88552ea44b1411582c94fd124f7bb3ec227e2a400dbbfaad3dc2f5ad )
14
14
15
- MVVMFrame for Android 是一个基于Google官方推出的Architecture Components dependencies ( Lifecycle,LiveData,ViewModel,Room) 构建的快速开发框架。有了MVVMFrame的加持,从此构建一个MVVM模式的项目变得快捷简单。
15
+ MVVMFrame for Android 是一个基于Google官方推出的Architecture Components dependencies(现在叫JetPack){ Lifecycle,LiveData,ViewModel,Room} 构建的快速开发框架。现在应该叫JetPack 。有了MVVMFrame的加持,从此构建一个MVVM模式的项目变得快捷简单。
16
16
17
17
## 架构
18
18
![ Image] ( image/mvvm_architecture.jpg )
@@ -26,30 +26,30 @@ MVVMFrame for Android 是一个基于Google官方推出的Architecture Component
26
26
<dependency>
27
27
<groupId>com.king.frame</groupId>
28
28
<artifactId>mvvmframe</artifactId>
29
- <version>1.1.2 </version>
29
+ <version>1.1.3 </version>
30
30
<type>pom</type>
31
31
</dependency>
32
32
```
33
33
### Gradle:
34
34
``` gradle
35
35
//AndroidX 版本
36
- implementation 'com.king.frame:mvvmframe:1.1.2 '
36
+ implementation 'com.king.frame:mvvmframe:1.1.3 '
37
37
38
38
//Android 版本
39
39
implementation 'com.king.frame:mvvmframe:1.0.2'
40
40
```
41
41
### Lvy:
42
42
``` lvy
43
- <dependency org='com.king.frame' name='mvvmframe' rev='1.1.2 '>
43
+ <dependency org='com.king.frame' name='mvvmframe' rev='1.1.3 '>
44
44
<artifact name='$AID' ext='pom'></artifact>
45
45
</dependency>
46
46
```
47
47
48
48
### ** Dagger** 和 ** Room** 的注解处理器
49
49
50
- 您需要引入下面的列出的编译时的注解处理器 ,用于自动生成相关代码。其它对应版本具体详情可查看 [ Versions] ( https://github.com/jenly1314/MVVMFrame/releases )
50
+ 你需要引入下面的列出的编译时的注解处理器 ,用于自动生成相关代码。其它对应版本具体详情可查看 [ Versions] ( https://github.com/jenly1314/MVVMFrame/releases )
51
51
``` gradle
52
- //AndroidX ------------------ MVVMFrame v1.1.2
52
+ //AndroidX ------------------ MVVMFrame v1.1.3
53
53
//dagger
54
54
annotationProcessor 'com.google.dagger:dagger-android-processor:2.27'
55
55
annotationProcessor 'com.google.dagger:dagger-compiler:2.27'
@@ -119,7 +119,7 @@ dataBinding {
119
119
120
120
```
121
121
122
- Step.2 使用JDK8编译(v1.1.2新增 ),在你项目中的build.gradle的android{}中添加配置:
122
+ Step.2 使用JDK8编译(v1.1.3新增 ),在你项目中的build.gradle的android{}中添加配置:
123
123
``` gradle
124
124
compileOptions {
125
125
targetCompatibility JavaVersion.VERSION_1_8
@@ -128,8 +128,8 @@ compileOptions {
128
128
129
129
```
130
130
131
- Step.3 自定义全局配置(继承MVVMFrame中的FrameConfigModule)
132
- ``` Java
131
+ Step.3 自定义全局配置(继承MVVMFrame中的FrameConfigModule)(提示:如果你没有自定义配置的需求,可以直接忽略此步骤)
132
+ ``` java
133
133
/**
134
134
* 自定义全局配置
135
135
* @author <a href =" mailto:jenly1314@gmail.com" >Jenly</a>
@@ -168,15 +168,15 @@ public class AppConfigModule extends FrameConfigModule {
168
168
}
169
169
```
170
170
171
- Step.4 在你项目中的AndroidManifest.xml中通过配置meta-data来自定义全局配置
172
- ``` Xml
171
+ Step.4 在你项目中的AndroidManifest.xml中通过配置meta-data来自定义全局配置(提示:如果你没有自定义配置的需求,可以直接忽略此步骤)
172
+ ``` xml
173
173
<!-- MVVMFrame 全局配置 -->
174
174
<meta-data android : name =" com.king.mvvmframe.app.config.AppConfigModule"
175
175
android : value =" FrameConfigModule" />
176
176
```
177
177
178
- Step.4 用你项目的Application继承MVVMFrame中的BaseApplication
179
- ``` Java
178
+ Step.5 用你项目的Application继承MVVMFrame中的BaseApplication
179
+ ``` java
180
180
/**
181
181
* MVVMFrame 框架基于Google官方的Architecture Components dependencies 构建,在使用MVVMFrame时,需遵循一些规范:
182
182
* 1.你的项目中的Application中需初始化MVVMFrame框架相关信息,有两种方式处理:
@@ -190,8 +190,10 @@ public class App extends BaseApplication {
190
190
191
191
@Override
192
192
public void onCreate () {
193
+ // TODO 如果默认配置已经能满足你的需求,你不需要自定义配置,可以通过下面注释掉的方式设置 BaseUrl,从而可以省略掉 step3 , setp4 两个步骤。
194
+ // RetrofitHelper.getInstance().setBaseUrl(baseUrl);
193
195
super . onCreate();
194
- // 开始构建项目时,DaggerApplicationComponent类可能不存在,您需要执行Make Project才能生成,Make Project快捷键 Ctrl + F9
196
+ // 开始构建项目时,DaggerApplicationComponent类可能不存在,你需要执行Make Project才能生成,Make Project快捷键 Ctrl + F9
195
197
ApplicationComponent appComponent = DaggerApplicationComponent . builder()
196
198
.appComponent(getAppComponent())
197
199
.build();
@@ -204,6 +206,30 @@ public class App extends BaseApplication {
204
206
}
205
207
```
206
208
209
+ > 目前通过设置 BaseUrl 的入口主要有两种:
210
+ >> 1.一种是通过在 Manifest 中配置 meta-data 的来自定义 FrameConfigModule,在里面 通过 {@link ConfigModule.Builder#baseUrl(String)}来配置 BaseUrl。(一次设置,全局配置)
211
+ >
212
+ >> 2.一种就是通过RetrofitHelper {@link RetrofitHelper#setBaseUrl(String)} 或 {@link RetrofitHelper#setBaseUrl(HttpUrl)} 来配置 BaseUrl。(可多次设置,动态全局配置,有前提条件)
213
+ >
214
+ > 以上两种配置 BaseUrl 的方式都可以达到目的。但是你可以根据不同的场景选择不同的配置方式。
215
+ >
216
+ > 主要场景与选择如下:
217
+ >
218
+ >> 一般场景:对于只使用单个不变的 BaseUrl的
219
+ >>> 场景1:如果本库的默认已满足你的需求,无需额外自定义配置的。
220
+ > 选择:建议你直接使用 {@link RetrofitHelper#setBaseUrl(String)} 或 {@link RetrofitHelper#setBaseUrl(HttpUrl)} 来初始化 BaseUrl,切记在框架配置初始化之前,即你的 {@link Application#onCreate()}的父类onCreate之前设置。
221
+ >
222
+ >>> 场景2:如果本库的默认配置不满足你的需求,你需要自定义一些配置的。(比如需要使用 RxJava相关)
223
+ > 选择:建议你在自定义配置中通过 {@link ConfigModule.Builder#baseUrl(String)} 来初始化 BaseUrl。
224
+ >
225
+ >> 二般场景:对于只使用单个 BaseUrl 但是,BaseUrl中途会变动的。
226
+ >>> 场景3:和一般场景一样,也能分两种,所以选择也和一般场景也可以是一样的。
227
+ > 选择:两种选择都行,但当 BaseUrl需要中途变动时,还需将 {@link RetrofitHelper#setDynamicDomain(boolean)} 设置为 {@code true} 才能支持动态改变 BaseUrl。
228
+ >
229
+ >> 特殊场景:对于支持多个 BaseUrl 且支持动态可变的。
230
+ >>> 选择:这个场景的选择,主要涉及到另外的方法,请查看 {@link RetrofitHelper#putDomain(String, String)} 和 {@link RetrofitHelper#putDomain(String, HttpUrl)}相关详情
231
+ >
232
+
207
233
[ Kotlin Demo] ( https://github.com/jenly1314/KingWeather )
208
234
209
235
更多使用详情,请查看[ app] ( app ) 中的源码使用示例或直接查看[ API帮助文档] ( https://jenly1314.github.io/projects/MVVMFrame/doc/ )
@@ -213,9 +239,21 @@ public class App extends BaseApplication {
213
239
##### [ EasyChat] ( https://github.com/yetel/EasyChatAndroidClient ) 一款即时通讯APP
214
240
##### [ AppTemplate] ( https://github.com/jenly1314/AppTemplate ) 一款基于** MVVMFrame** 构建的App模板
215
241
242
+ ## 压缩与混淆
243
+
244
+ 从** Android Studio 3.3+** 之后,AS新增特性代码压缩工具** R8** ,** R8** 旨在集成** ProGuard** 和** D8** 的功能。
245
+ 目前推荐第三方库都自己配置混淆规则,这样在混淆时,如果使用** R8** ,则可以直接包含第三方依赖库的混淆规则,就不用繁琐的去配置每个依赖库的混淆规则。
246
+
247
+ 目前** MVVFrame** 所有依赖混淆规则详情:[ ProGuard rules] ( lib/proguard-rules.pro )
216
248
217
249
## 版本记录
218
250
251
+ #### v1.1.3:2020-6-1
252
+ * 支持配置多个BaseUrl,且支持动态改变(详情查看 [ RetrofitHelper] ( https://github.com/jenly1314/RetrofitHelper ) )
253
+ * 对外暴露更多配置,(详情查看 FrameConfigModule)
254
+ * 优化细节
255
+ * 更新Retrofit至v2.9.0
256
+
219
257
#### v1.1.2:2020-4-5
220
258
* 优化细节
221
259
* 更新Gradle至v5.6.4
@@ -250,8 +288,8 @@ public class App extends BaseApplication {
250
288
* MVVMFrame初始版本
251
289
252
290
## 赞赏
253
- 如果您喜欢MVVMFrame,或感觉MVVMFrame帮助到了您 ,可以点右上角“Star”支持一下,您的支持就是我的动力 ,谢谢 :smiley : <p >
254
- 您也可以扫描下面的二维码 ,请作者喝杯咖啡 :coffee :
291
+ 如果你喜欢MVVMFrame,或感觉MVVMFrame帮助到了你 ,可以点右上角“Star”支持一下,你的支持就是我的动力 ,谢谢 :smiley : <p >
292
+ 你也可以扫描下面的二维码 ,请作者喝杯咖啡 :coffee :
255
293
<div >
256
294
<img src =" https://jenly1314.github.io/image/pay/wxpay.png " width =" 280 " heght =" 350 " >
257
295
<img src =" https://jenly1314.github.io/image/pay/alipay.png " width =" 280 " heght =" 350 " >
0 commit comments