关于日益泛滥的Android第三方框架

转载请注明出处:
http://blog.csdn.net/ahence/article/details/52929436

前言

目前Android开发依然很火,如果你关注GitHub,可能会发现越来越多的第三方库与框架(一些简单的库可能称不上框架,为了行文方便,后文统一称之为框架)如雨后春笋般出现。这在一定程度上反映了Android开发的繁荣,但任何事情都有其另一面,第三方框架在方便了App开发的同时,也带来了一些不利影响。

最近我们在招聘2~3年工作经验的Android工程师,应聘者简历上的项目介绍无一例外都用到了大量第三方框架,更有甚者几乎整个App都是靠框架堆起来的。但是当问面试者某个框架的优缺点时,却很少有人能回答出来,即使有的面试者知道所用框架的优缺点,但却丝毫没看过框架的源码,更别提对源码做修改或扩展了。仅仅是拿来主义,简单地拿来实现自己的功能,最多做个简单的封装,有的甚至封装都是第三方库代劳。

其实不只是中高级开发者,很多初学者,一上来就各种框架地用,压根儿不去想内部是如何实现的。比如使用OkHttp获取网络数据却不知道HTTP请求的基本原理,使用Glide请求加载图片却不知道图片的缓存、解码过程……

突然感到事情很严重,也庆幸当初自己学习Android时还没有那么多框架。

回归本真

从我身边的朋友,同学,网络以及面试遇到的一些开发者来看,貌似都是言必谈框架,开发必用框架,不知道某个框架就好像落伍了一样,但这些开发者里面真正能完全弄懂自己所用框架的却占很小比例,也许这并不能覆盖整个业界的情况,但多多少少能反映出一些端倪。

于是,越来越多的人盲目跟风地使用RxAndroid、Dagger、ReactNative,其实并不是这几个框架不好,相反这几个框架非常不错,只是很多人是为用而用,没有理解其原理,没有了解其优缺点就盲目地用。

是的,技术发展日新月异,就像这个社会,总是会有新的事物出现。但在某个阶段,技术发展的同时也许会迷失了自我,前段时间有一篇文章《2016年学习JavaScript是一种怎样的体验》非常火,真心建议大家一看。其实无论技术发展得如何眼花缭乱,我们需要真正掌握最本质的东西,对于前端,我觉得是JavaScript、HTML、CSS,对于Android,我觉得是Java与Android API。万变不离其宗,回归本真,这世上本无框架。

第三方框架

其实第三方框架并非质量都不好,也并非不可使用,只是不建议大家没有选择地使用,不明所以地使用,更不建议大家靠第三方框架来堆砌App。如果没有吃透第三方框架,那么这个App就像一座华丽的大楼,如果哪天某个框架出了问题,可能就像坏了一根支撑的柱子,大厦就有可能崩塌。

因为第三方框架也是人写的,是人写的就有可能出bug。相比框架bug,更让人担心地是一种不好地风气正在蔓延。以热更新技术为例(不一一列举名称了,大家都知道的),国内真是热闹,你方唱罢我登场,有个人的,有公司的,你刚开源一套框架,过不多久,我也来开源一套,到现在怎么也得有六七八九个框架了吧!

开源的目的是为了不重复造轮子,而我们呢?大家何不齐心合力去完善一个框架呢?大家貌似都在炫耀技术:看,我家也有热更新!还有一些个人开源库的作者,求star,求推广,一夜star上千,为名还是为利?过段时间项目没人维护了,试问这样的框架你敢用吗?

当然也有一些非常好的框架,比如Square出品的,Google出品的,基本都是精品,值得学习。

选择标准

第三方框架数量众多,且还在快速增长,其质量良莠不齐。因此如何挑选框架成为一个严肃的问题,以下是个人的几点参考:

  1. 业界著名的(如Square, Google的)且经过大量使用验证的框架
  2. 长期维护且比较活跃(如提交issue)的框架
  3. 选择合适的框架,尽量小而精,不要大而全。这可能有些矛盾,因为大部分框架都会考虑通用性,如果仅需要其中一两个功能,就需要权衡了
  4. 根据开源级别,尽量选择允许修改源码的,这样一旦框架出现问题,可自行修改
  5. 对于国内的库,千万不要相信star数量

一些建议

对初学者

对于刚迈入Android开发门槛的初学者,建议不要一上来就使用各种框架,这样有两点坏处:

  1. 框架帮我们完成了功能,屏蔽了实现细节,导致自己看不到底层具体实现
  2. 框架一般抽象度较高,且对于初学者不易看懂,学习框架费时费力,事倍功半

建议初学者实打实地一行一行代码写,如自己尝试封装一个HTTP请求的功能模块,自己写一个图片三级缓存,自己实现一个线程池调度器……扎扎实实打好基础,把握住本质的东西,以后对于各种框架就比较容易驾驭了。

因此对于初学者建议是不用框架。

对中高级开发者

对于中高级开发者,如果要在项目中使用第三方框架的话,建议慎重选择合适的框架,且务必研读其源码,详细了解其实现原理、利弊等,否则一旦出现异常,都无从下手。假设App是亿级用户规模,使用任何第三方的东西都要小心,确保一切在掌握中才行。

对框架开发者

对于框架开发者,希望不要奔着名利的目的去贡献一个框架,不要重复造轮子,为大家提供真正精致优秀的框架,感谢!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、 以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方开源组件: 网络请求android-async-http 图片异步加载universal-image-loader Sqlite数据操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码 百度地图定位SDK 谷歌依赖注入RoboGuice WebService调用ksoap2 XML解析XStream 动画开源nineoldandroids 表单验证android-validation-komensky 更多优秀开源等待集成... 已封装工具类: HTTP网络通信工具类(ToolHTTP.java),get/post请求,支持多种接口回调 SOAP协议通信工具类(ToolSOAP.java),基于异步回调请求WebService接口 Sqlite数据操作工具类(ToolDatabase.java),获取DAO、创建表、删除表等API 提示信息对话框工具类(ToolAlert.java),已集成泡泡、土司、对话框三种提示 文件操作工具类(ToolFile.java),assets/raw/xml/shrePerface/等文件读写API 地图定位工具类(ToolLocation.java),读取GPS状态、请求定位、获取经纬度等方法 社会化分享工具类(ToolShareSDK.java),各大开发平台分享API操作 短信验证码工具类(ToolMSM.java),移动/联通/电信三网发送手机短信验证码、异步回调验 证结果 字符串操作工具类(ToolString.java),生成UUID、非空非NULL逻辑判断、生成MD5等常用共 通方法 数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方 法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操 作 读取本地资源工具类(ToolResource.java),反射本地资源文件API,避免依赖R文件,方便 jar形式发布 Android单位转换工具类(ToolUnit.java),sp/dp/px互转 自定义Toast工具类(ToolToast.java),自定义背景色、字体颜色、大小、边框等 Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式化日期、日期转换等操作 XML操作工具类(ToolXml.java),基于DOM/XMLPullPaser模式解析、生成XML操作 XMPP操作工具类(ToolXMPP.java),基于XMPP协议的相关API操作 适配字体工具类(ToolAutoFit.java),代码根据设备密度自动缩放View的字体大小 LOG相关工具类(ToolLog.java) 功能待续-->切入记录异常日志,并存储文件或上传至服务 器 已封装/收集自定义控件: 兼容低版本的SwitchButton 追加自定义属性Value的CheckBox/RadioButton/RadioGroup/SingleSpinner 圆角提示信息TipsView 圆角图片RoundImageView 自定义样式风格Progres
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值