Releases: JessYanCoding/MVPArt
Releases · JessYanCoding/MVPArt
2.5.0
每次升级之前, 请一定记得先同步更新 config.gradle !!!
「Version: 2.5.0」Friday, 7 December 2018: Show Diff
v2.5.0 将一些 Art 核心库的代码抽取到了扩展库中,以便于框架使用者可以更灵活的选择不同的三方库,并且还可以减轻 Art 的体积,后续还会继续分拆更多的扩展库出来,让 Art 的扩展性更强,体积更轻,想让旧项目从 v2.4.1 升级到 v2.5.0 根据 这里 修改即可!!!
注意!!! 由于 v2.5.0 在 IView 中使用到了接口的默认方法,所以在升级 v2.5.0 之前必须保证项目使用了 Java 8 及以上
- 提升 Gradle 到 v4.6
- 提升 Glide 到 v4.8.0
- 提升 Gson 到 v2.8.5
- 提升 Dagger 到 v2.19
- 提升 Timber 到 v4.7.1
- 提升 Okhttp 到 v3.12.0
- 提升 Rxpermissions 到 v0.10.2
- 提升 RxJava 到 v2.2.4
- 提升 RxAndroid 到 v2.1.0
- 提升 RetrofitUrlManager 到 v1.4.0
- 提升 com.android.tools.build:gradle 到 v3.2.1
- 提升 android-maven-gradle-plugin 到 v2.1
- 移除 Art 中的 com.android.support:design 库,目的是减小 Art 体积, design 库中含有太多 View
- 移除 Art 中的 AndroidEventBus
- 增加 IntelligentCache,IntelligentCache 含有 LRU 算法的存储容器和可永久将数据存储在内存中的存储容器,对 IntelligentCache 的增删改查都可以根据需求在两个存储容器中选择一个进行操作
- 新增 Platform 类,可管理 Art 中可扩展的三方库的依赖情况
- 新增 EventBusManager 类,使用者可自由在 AndroidEventBus 和 EventBus 中选择
- 新增 AppComponent#executorService,提供一个全局公用的线程池给使用者
- 新增 mContext 字段到 BaseFragment 中
- 优化 Retrofit 获取 Service 的方式,根据知乎提供的方式,可以加快第一次获取 Service 的速度
- 优化 IView,将部分接口方法改为默认方法,以后实现类不再需要实现 IView 的所有方法
- 优化 PermissionUtil,当请求权限失败,可反馈所有请求失败的权限名称
- 优化 Demo,将 Demo 中的屏幕适配框架从 AndroidAutoLayout 替换为 AndroidAutoSize
- 修复 RepositoryManager#clearAllCache() 无效的问题
- 修复 BaseActivity 中,当 xml 解析错误不会抛真实错误的问题
- 修复 Art 会在网络请求体中有 '%' 字符时奔溃的问题
- 修复当项目中使用 Logger 时,Art 网络日志打印会出现错乱的问题
- 修复 AdapterViewPager 引起奔溃的问题,#219
- 重构 Art 中 AndroidAutoLayout 的部分代码,并将代码抽取到扩展库 art-autolayout 中
- 重构 Art 中 Glide 的部分代码,并将代码抽取到扩展库 art-imageloader-glide 中
- 重构 AppManager,可使用静态方法 AppManager#getAppManager 直接获取 AppManager 实例,之前通过 AppComponent#appManager() 获取的方式废弃
- 重命名 app -> demo
2.4.1
每次升级之前, 请一定记得先同步更新 config.gradle !!!
Show Diff
之前引入 v2.3.5 及以下的旧版本项目, 只须做一处修改即可兼容 v2.4.1, 请注意 向下兼容警告
- 增加 FormatPrinter, 提供更规范的网络请求以及网络响应日志打印格式, 并且可以在 GlobalConfiguration 中根据自己的需求自定义想要的输出格式, 详见 Demo
- 增加 BlurTransformation, 使 GlideImageLoaderStrategy 默认支持高斯模糊
- 移动 RequestInterceptor 到 http.log 包下, 引用了这个类的地方都需要重新导入正确的包名, 在 Demo 中 GlobalHttpHandlerImpl 和 GlobalConfiguration 这两个类有引用 RequestInterceptor ( 向下兼容警告: 这里需要旧版本项目做出重新导包的调整 )
- 优化 框架中的 Dagger 应用方式, 模板 也做了相应优化
- 优化 Demo 图标
- 优化 ImageConfigImpl, 新增几个字段 (isCircle, imageRadius, blurValue ...), 以添加几个 GlideImageLoaderStrategy 默认支持的 BitmapTransformation, 以后 ImageConfigImpl 将不能存放 BitmapTransformation 类型(之前的 transformation 字段将作废掉, 将在之后的版本被 删除 ), ImageConfigImpl 以及它的子类只能存放基础类型和 Android 包里的类, 尽量避免存放某个图片请求框架的特有类, 这样可以隔离耦合, 降低 ImageLoader 切换为其他图片请求框架的风险
- 调整 minSdkVersion 到 14 (之前是 15)
- 修复 AnroidStudio v3.1.0 及以上版本日志输出格式混乱的问题, (据 JessYan 猜测, 可能是因为 AndroidStudio v3.1.0 及以上版本将极短时间内以相同 tag 输出多次的 log 自动合并为一次输出, 导致本来对称的输出日志, 出现不对称的问题)
- 兼容 AnroidStudio v3.1.0 (模板 也已兼容)
- 提升 RxErrorHandler 到 v2.1.1
- 提升 RetrofitUrlManager 到 v1.2.5
- 提升 GradlePlugins 到 3.1.0
- 提升 SupportLibrary 到 v27.1.0
- 提升 Retrofit 到 v2.4.0
- 提升 Dagger 到 v2.15
- 提升 Glide 到 v4.6.1
- 提升 Okhttp 到 v3.10.0
- 提升 RxAndroid 到 v2.0.2
- 提升 Rxjava 到 v2.1.12
- 提升 Upgrade Timber 到 v4.7.0
2.3.5
Show Diff
升级之前, 请一定记得同步更新 config.gradle !!!
之前引入 v2.3.5 以上的旧版本的项目, 无需任何修改即可直接升级, 如果之前自己自定义过 BaseActivity 或 BaseFragment, 升级到 v2.3.5 之后还需要依照框架中的 BaseActivity 和 BaseFragment, 实现 provideCache() 方法即可
- 修复 ImageLoader 扩展后发生 ClassCastException 异常 #175
- 修复 BadParcelableException 异常(#160, #180)
- 增加 IActivity#provideCache() 和 IFragment#provideCache() 方法, 提供在 Activity 和 Fragment 的生命周期内存取一些必要的数据, 更高级的方式可使用 LifecycleModel
- 优化框架中和 Demo 中的注释
- 优化 RepositoryManager 高并发问题
- 优化 AppManager 高并发问题
- 优化 DeviceUtils, 避免在 Android6.0 版本上获取 ConnectivityManager 时发生内存泄露
- 优化 GlobalHttpHandlerImpl, 使用 Gson 替代 JSONObject 解析 Json
- 提升 Android Gradle Plugin 到 v3.0.1
- 提升 Android SDK 到 27
- 提升 BuildTools 到 v27.0.3
- 提升 Android Support Library 到 v27.0.2
- 提升 Dagger 到 v2.14.1
- 提升 Glide 到 v4.5.0
- 提升 Okhttp 到 v3.9.1
- 提升 RxJava 到 v2.1.8
- 提升 RxCache 到 v1.8.3
- 提升 RxPermissions 到 v0.9.5
- 提升 Timber 到 v4.6.0
2.3.1
之前引入旧版本的项目需要调整后才能兼容 v2.3.1, 请注意 向下兼容警告
Show Diff
- 兼容 Android Studio v3.0 以及 Android Gradle Plugin v3.0
- 支持 Android Gradle Plugin v3.0 的一些特性
- 支持 Lifecycles of Architecture Components, 在 Presenter 中可直接使用 Architecture Components 提供的生命周期组件, 可与 Activity 和 Fragment 的生命周期做绑定
- 增加 Cache 和 LruCache, 以存储一些框架必需的数据
- 增加 shouldShowRequestPermissionRationale 方法到 RequestPermission 接口中, 当请求权限时用户选择不再询问则会回调此方法( 向下兼容警告: 这里需要旧版本项目作出调整 )
- 优化 RxCacheConfiguration 配置 RxCache 的方式( 向下兼容警告: 这里需要旧版本项目作出调整 )
- 提升 RxErrorHandler 到 v2.1.0(支持背压)
- 提升 RxJava2 到 v2.1.6
- 提升 Gson 到 v2.8.2
- 提升 Leakcanary 到 v1.5.4
- 提升 Android Support Library 到 v26.1.0
- 提升 Okhttp 到 v3.9.0
- 提升 retrofit-url-manager 到 v1.1.0
- 提升 Progressmanager 到 v1.5.0
- 提升 Glide 到 v4.2.0
- 提升 Dagger 到 v2.12
- 修复 BadParcelableException 的问题
- 修复 AppManager#appExit() 在进程未被杀死时释放资源的问题
2.2.3
- 提升 Android Support Library 到 v26.0.2
- 重构 AppManager ,增加 AppManager#getTopActivity(), AppManager#killAll(Class[]), AppManager#killAll(String...) 等方法,使 AppManager 更加强大,详细用法,请查看源码注释
- 增加 AppManager.HandleListener 接口,可扩展和遥控 AppManager 的更多功能,使用方法请参考 Wiki 以及 Demo
- 优化 GlobalConfiguration ,使结构更加清晰
- 优化代码风格
- 添加开源许可
2.2.0
- RetrofitUrlManager 以最简洁的 Api 让 Retrofit 同时支持多个 BaseUrl 以及动态改变 BaseUrl
- 提升 Android SDK 以及 buildTools 到最新的 26 (Oreo)
- 提升 Android Support Library 到 v26.0.1
- 提升 框架所使用的部分三方库的版本(Rxjava2 v2.1.1 -> 2.1.3)
- 提升 Glide 到 v4.0.0 ,注意 v4.0.0 后不需要在 AndroidManifest 中声明 GlideModule 的 meta-data
- 提升 ButterKnife 到 v8.8.1,注意 v8.8.0 后需调用 ButterKnife.setDebug(true) (建议在 AppLifecycles#onCreate(Application) 中调用),ButterKnife 才会打印提示日志
- 更名 UiUtils 为 ArtUtils
- 更名 CharactorHandler 为 CharacterHandler
- 更名 GlideImageConfig 为 ImageConfigImpl ,建议在项目中自行实现 BaseImageLoaderStrategy 和 ImageConfig 替换现有策略,因为默认提供的 GlideImageLoaderStrategy 只是为了快速使用 Glide ,实现比较简单,如果遇到复杂场景将无能为力,我为什么设计 ImageLoader ? 感觉比直接调用 Glide 复杂多了? 如果你直接使用 Glide 请求图片,当等你从 Glide v3.0 升到 v4.0 (或者更换图片请求框架)时,看着满项目报的红,你就知道为什么我要多封装一层,而不是直接调用
- 增加 GlideAppliesOptions 接口,帮助 BaseImageLoaderStrategy 扩展 Glide 的自定义配置
- 增加 IRepositoryManager#getContext() 方法
- 增加 ArtUtils#obtainAppComponentFromContext(Context) 方法,可直接从 Context 获取 AppComponent ,避免频繁强转
- 移动 imageloader 包,到 http 包下
- 修复 BaseHolder 中强行使用 AutoLayout 的 Bug
- 优化 Demo UserModel 中,请求数据的逻辑
2.1.6
- 优化ClientModule
- 优化一些不规范的类名
- 优化 BasePresenter
- 优化 Demo , doAfterTerminate() 改为 doFinally()
2.1.5-rx2
- 改善 AppDelegate 结构,使 AppDelegate.Lifecycle 改名为 AppLifecycles
- 增加 AppLifecycles#attachBaseContext(Context) 方法,可以做一些 MultiDex 的初始化和插件化框架等框架的初始化,在 ConfigModule#injectAppLifecycle(Context, List) 中使用
- 增加 项目启动后仍可以改变 Retrofit 的 BaseUrl 的功能,详情请查看 Demo 的 GlobalConfiguration
- 增加 RequestInterceptor 可控制日志打印等级的功能,可使用 GlobalConfigModule.Builder#printHttpLogLevel(RequestInterceptor.Level) 控制框架 Http 信息打印的级别
- 增加 RepositoryManager#clearAllCache() 方法,可清理 RxCache 中的所有缓存
- 修复 Demo 中出现 Fragment 内存泄漏的问题
- 优化当使用者在 XML 中使用 标签,静态生成 Fragment 时出现的兼容问题
- 优化 proguard-rules.pro
- 优化 GlobalConfiguration 中 配置 ToolBar 的模块,为了提高 Fragment 的兼容性,将逻辑从 onActivityCreated 移动到 onActivityStarted
- 优化 Demo 中配置 Timber 部分,使使用者可以将 MVPArms 的日志打印框架随意切换到 Logger 或其他日志打印框架
- 优化 RequestInterceptor ,使框架 Http 日志打印,可解析 XML 格式的结果
- 优化 AppManager#getCurrentActivity() 方法,降低值为 null 的概率
- 提升 框架所使用的部分三方库的版本
- 提升 Support-Library 为 v25.4.0 ,注意需要在根目录的 build.gradle 中加入:
allprojects {
repositories {
jcenter()
maven { url "https://maven.google.com" }
}
}
2.1.0-rx2
- ProgressManager 一行代码监听 App 中所有网络链接的上传以及下载进度,以及 Glide 加载进度
- RxErrorHandler 升级为 2.0.2 ,优化 GlobalConfiguration 中 responseErrorListener 错误处理细节
- 优化 ClientModule 和 GlobalConfigModule 的 Dagger 注入方式
- 规范一些方法的方法名,发现方法找不到,可能是改了方法名,大部分只是把方法名首字母改为小写
- 优化 PermissionUtil ,请参照 UserPresenter 中请求权限的写法
- 优化 proguard-rules.pro 规则
- 优化 App 出现 onLowMemory 时的应对策略
- 优化 AdapterViewPager
- 优化 AppManager
- v2.1.0 之后,本框架并不强制你使用 AutoLayout,如果你不想使用 AutoLayout,就不要配置
- AndroidManifest 中的 meta-data,并保证项目中没有使用 AutoView
- 优化 RequestInterceptor ,使打印日志更加智能准确
- ActivityLifecycle 不再主动注销 FragmentLifecycle ,Activity 销毁时会自动注销
- 优化 dependencies 的结构,去除框架对 cardview-v7 的直接依赖
2.0.4-rx2
- IActivity 和 IFragment 的 initView() , initData() 改为 initView(Bundle) , initData(Bundle) 针对需要在 Activity 被重建时恢复数据的情况 (请使用全局替换减少更新的成本) ,以及更新 MVP_generator_solution 模版
- 优化 AppManager#getCurrentActivity 为 null 的情况
- 升级一些三方库以及 buildToolsVersion 的版本
- 优化 Demo 返回键的图标