Android开发框架
针对Native App
按照开发流程的先后顺序统计:
一. 开发模式
Demo及小型项目 -> 不推荐开发模式,快速开发
大型项目/多人协作/逻辑复杂 -> MVP 或 MVVM
MVP代表 : Dagger2 (谷歌推荐使用,编译时依赖注入,解耦,维护)
MVVM代表 : DataBinding(谷歌推荐使用,ViewMode和View双向绑定,数据驱动,低耦合,高复用…)
Introduction : https://www.jianshu.com/p/2fc41a310f79
Sample : https://github.com/googlesamples/android-architecture
二. Base库
许多android项目从0到上线,有一些默认考虑的需求,例如屏幕适配、网络请求等,下面我们逐条讨论,后续可持续补充和更新.
①构建速度
构建速度是快速开发的一个直接影响因素,我们应该提高构建速度,减少非必要耗时
FreeLine : 阿里推荐,秒级编译, https://github.com/alibaba/freeline;首次构建需要下载依赖包,实际使用过程中存在一些问题
②布局适配
by鸿洋Android屏幕适配方案,直接填写设计图上的像素尺寸即可完成适配,最大限度解决适配问题。
AndroidAutoLayout : https://github.com/hongyangAndroid/AndroidAutoLayout
By布隆 一种粗暴快速的Android全屏幕适配方案
https://github.com/Firedamp/Rudeness?spm=a2c4e.11153940.blogcont145419.7.bf241aeeozLsJC
③权限申请
RxPermissions : https://github.com/tbruyelle/RxPermissions 5.7k star
Easypermissions : 谷歌推荐, https://github.com/googlesamples/easypermissions
5.2k star
④网络请求
这个没什么好说的,首选Retrofit、OkhttpUtils或OkGo,三者均基于 Http 协议,封装了 OkHttp的网络请求框架,操作简单,附上项目地址:
Retrofit ; https://github.com/square/retrofit square出品,必属精品 26.5k star
OkHttpUtils : https://github.com/hongyangAndroid/okhttputils by鸿洋大神 6.1k star(已停止维护)
OkGo : https://github.com/jeasonlzy/okhttp-OkGo 使用文档很详细 有文件上传下载操作的首推6.9k star
网络请求日志
com.squareup.okhttp3:logging-interceptor:3.5.0
给OkhttpClient添加这个日志拦截器即可
⑤异步操作
强烈推荐Rxjava.
Rxjava中的响应式编程是被观察者拿到数据主动传递给观察者,将展示层和数据处理层分离,解耦了各个模块,通过不同线程操控代码运作配合变换过滤等api操作实现数据流传播.
异步、简洁(逻辑、代码读写)。内部支持多线程操作,强大的map和flatmap保证了依赖上一次接口数据进行二次处理时不会发生嵌套,将各个模块分离。
java1.8和第三方框架支持Lambda流式。保证了Rxjava的代码在阅读上更加简洁。
随着程序逻辑的复杂,依然保持简洁。解耦了各个模块操作,单一化,不嵌套。
推荐博客 : https://www.jianshu.com/p/464fa025229e
⑥数据解析
JSON解析:最通用的是 Gson ,用起来也很方便,但从效率上来讲 Gson 不是最快的, FastJson 和 Jackson 各有优势(具体分析参见这里:http://www.cnblogs.com/windlaughing/p/3241776.html)
⑦事件通信
EventBus : EventBus is a publish/subscribe event bus for Android and Java.
17.4k star
允许发送粘性事件,fragment与Activity间无缝通信,使用方法简单
⑧图片加载
关于图片加载,不推荐那么多,使用Glide,操作简单快速,谷歌推荐. Facebook公司的Fresco虽然在图片数量较大时,性能上表现较优,但使用不如Glide简洁.
glide中文文档 ; https://muyangmin.github.io/glide-docs-cn/
⑨数据缓存
文件储存 存储json String文本
数据库存储 greendao sqlbrite dbflow
⑩关键操作埋点以及异常信息收集
友盟统计sdk
⑪与H5通信
Weex 阿里推荐,后迁移至 Apache 基金会
https://github.com/apache/incubator-weex
VasSonic 腾讯推荐,专注于提升H5首屏加载速度
https://github.com/Tencent/VasSonic 7.2k star
推荐JsBridge
https://github.com/lzyzsd/JsBridge 4.3k star
⑫UI框架
状态栏导航栏相关ImmersionBar https://github.com/gyf-dev/ImmersionBar
多功能列表 https://github.com/CymChad/BaseRecyclerViewAdapterHelper
⑬日志工具
Simple, pretty and powerful logger for android https://github.com/orhanobut/logger
to be continue…
三. 组建库
① 第三方登录
qq登录/微信登录/微博登录/手机登录
② 分享
qq分享/微信分享/微博分享/短信分享
③ 推送
友盟推送
④ 换主题/换肤
Android-skin-support 一款用心去做的Android 换肤框架https://github.com/ximsfei/Android-skin-support 2.5k star
⑤ 位置服务
⑥ 支付相关
⑦ 录音相关
使用AudioRecord和MediaRecorder分别封装一套稳定的录音工具
⑧ 播放相关
使用exoplayer封装一套稳定的播放相关工具
to be continue…