源地址:http://fanxu.me/post/2013-06-06-1

AndroidAnnotation

官方网站

首先推荐AndroidAnnotation, 按官方网站的说法就是

Fast Android Development. Easy maintainance。

AndroidAnnotation的ViewByID,Preference,UI线程,后台线程,点击事件处理等特性, 可以让你少些非常多代码, 非常显著的提高android开发效率。
AndroidAnnotation利用的是java的annotation, 类似于预编译指令, 在编译时生成代码, 再进行编译。所以不管是用eclipse还是用idea都需要经过一些配置。配置的方法在官方文档都有介绍, 非常简单。文档地址

Android-Query

官方网站地址

Android-Query(AQuery) 是用来处理网络请求和操作ui的组件。官方对这个组件的定位是:

Our goal is to make Android coding simpler, easier, and more fun!

AQuery 提供一种对ui的链式处理方式, 试图简化ui操作的代码。

public void renderContent(Content content, View view) {    AQuery aq = new AQuery(view);    aq.id(R.id.icon).image(R.drawable.icon).visible().clicked(this, "someMethod");  aq.id(R.id.name).text(content.getPname());aq.id(R.id.time).text(FormatUtility.relativeTime(System.currentTimeMillis(), content.getCreate())).visible();aq.id(R.id.desc).text(content.getDesc()).visible();
}

个人比较喜欢的不是这部分对ui的操作, 我一般用AndroidAnnoation直接处理ui操作, 那更简洁更接近Android原生处理的方式。
AQuery最优秀的是对网络请求的处理, 它支持异步网络请求, 网络请求缓存。

AQuery aq = new AQuery(view);
aq.id(R.id.image1).image("http://www.vikispot.com/z/images/vikispot/android-w.png");

以上代码自动加载指定链接的图片, 并在加载完毕后显示在相应的组件上。若是自己写代码加载图片, 那叫一个痛苦啊。

还有更牛逼的。

//load an image from network, but only cache with file//this image is huge, avoid memory caching
boolean memCache = false;
boolean fileCache = true;aq.id(R.id.image1).image("http://www.vikispot.com/z/images/vikispot/android-w.png", memCache, fileCache);

以上代码, 自动将图片缓存在文件里, 下次再加载图片就不用再发起网络请求了。

更况且, 这么牛逼的组件大小只有96.5KB。

Google Cloud Message, GCM

许多人不敢用GCM,一个是担心网络被墙, 一个是担心Google服务框架的普及度。国内google服务确实很多被墙, 非常不稳定。 但GCM却是例外, 看看你的gmail的新邮件通知, 你就明白了。而对于Google服务框架在手机的普及度, 我想我们不用太担心, 的确是很多山寨机的rom里面没有带着个Google服务框架, 但大部分正规厂商已经非常重视这个问题, 像华为,中兴,魅族,小米等都有内嵌Google服务框架。另外, 并不是说没有Google Market, Google Sync, 就不能用GCM, 在部分华为手机上就是这样。

千万要慎重考虑自己搭建push服务器, 这个成本, 不管是开发成本还是维护成本, 都是小的创业公司难以承受的。Push 服务与传统的网页服务器有很大的区别, 传统的网页服务器请求过程短, 连接建立, 请求,回复,断开连接, 没有长期与服务器建立连接,不会给服务器造成很大的压力。而Push 服务就很不同, 技术实现也非常不同, 需要长时间与服务器建立连接, 空闲度很高,效益比很低。

我是做国外产品的, 利用Google Analytics 做过简单的统计,有近99.32%的设备是支持GCM的。

GCM做的真是不错, 我是吃过亏的。 中国人就是贪, 什么事情都想自己做, 什么都做不好。 我们自己做过Push服务, 结果 开发难度,效果和维护成本我们都很难承受;可是老板要, 我们只能硬着头皮上, 做到后面又被迫迁移到GCM上来。

GCM的效果非常好, 只要是网络有连接, 不管是你的手机怎么样, 都可以立即通知到消息。

这个组件的配置方式很简单, 说明文档在android开发者网站.

最近看了MiUI v5,发现这货竟然开始不内嵌Google Service Framework了, 既然这样, 上面的啰嗦, 大家就视而不见了吧。
据说国内做的比较好的是个推, 没试过, 不知道怎么样。

Google Analytics

谷歌分析不是必须的, 你可以选择国内的友盟统计。 友盟的统计会相对简单了些, 但应该能满足日常的需求。

再啰嗦一句, 千万也不要自行统计。 不光服务器代码要自己开发, 手机端还要处理网络不存在时的缓存处理。 最难的是还要自己写脚本分析数据。 不说别的, 光一个简单的用户地理位置分析, 估计就能搞死你。

所以, 我的同胞们, 我们的老板们, 现成的优秀的组件要会用, 不要什么都自己想着自己做, 你是做产品的不是做统计的, 那是友盟的活, 你都做了人家怎么活?

greenDAO

网站

这是我认为最好的Android ORM了。Android支持SQlite数据库, 但那个数据库操作叫一个复杂啊, 不光代码难看, 维护起来还非常不方便。一般我都不用数据库存储, 能文件就文件存储了, 直到我直到了greenDAO。 这货解决了一个大难题。

greenDAO分成两部分, 一部分用于生成数据库操作代码, 一部分用于在Android工程里面提供底层支持。greenDAO对每一个表都生成相应的对象, 在查询,插入等操作时只需要对这个对象进行操作就可以了。可以非常优雅的完成数据库操作的指令。

我知道某些服务器后端程序员,开始撅嘴了:笑话, 我们服务器后端有多少多少好的ORM, 不知道比你这个好上多少倍! 
我们是搞Android开发的好不好, android才不过五六年的时间好不好!

我们先来看看一段代码:

QueryBuilder qb = userDao.queryBuilder();
qb.where(Properties.FirstName.eq("Joe"),
qb.or(Properties.YearOfBirth.gt(1970),
qb.and(Properties.YearOfBirth.eq(1970), Properties.MonthOfBirth.ge(10))));
List youngJoes = qb.list();

这就是greenDAO里面的数据库查询, 简单吧? 赶快来用用吧!

Log4j

官方网站

做软件开发, 没有个日志组件是不行的。 Android原生的日志服务太简陋了, 连输出的文件都没有。

android-log4j配置稍微有些麻烦, 需要下载多个jar包, 包括log4j, android-log4j等。 我自己用proguard封了一个包, 用来输出日志到文件没有问题, 提供给大家。下载地址

final LogConfigurator lc = new LogConfigurator();
lc.setFileName(PATH_LOGGER_FILE);//日志文件路径
lc.setFilePattern("%d - [%-6p-%c] - %m%n");//日志输出格式
lc.setMaxBackupSize(2);//最多的文件备份个数, 超过后log4j将自行删除
lc.setMaxFileSize(1024 * 1024);//最大的日志大小, 超过后log4j将备份下来, 再新建一个文件。
lc.setRootLevel(Level.DEBUG);
// Set log level of a specific logger
lc.setLevel("org.apache", Level.DEBUG);
lc.configure();

把上述代码, 放在程序初始化的过程中。

private Logger logger = Logger.getLogger("LoggerName");
logger.debug("Log text");

就可以输出日志到文件了。

Common IO

官方网站

Common IO跟log4j同属于Apache开源基金会。 主要对文件操作, 数据流操作提供了非常多简单的函数。

gson

官方网站

不知道大家平常与服务器端做数据通信是用什么协议的, 千万不要自己发明啊。我见过最奇葩的通信协议是: 一个字段标示后面数据的长度, 然后拼接成字节数组作为通信协议。这种方式开发难不说, 调试起来非常不方便。 更奇葩的是, 还有人一直坚持的这么用, 真是不思进取啊。

我们经常用的是json。 协议非常简单, 还是明文的, 非常容易调试。 前后端合作非常顺畅。
gson的工作是把json的字符串直接转换为java的对象, 也可以把java的对象直接转换为字符串。 使用方式非常简单。

另外google有一个非常高效的数据协议叫protobuf,据说也很好, 不过数据没有json明文好调试, 一直都没有用。

最后还要吐槽下:若是网络链接是https, 不管是url还是返回的数据都是加密传输的, 不需要再什么DES加密一次了, 这是多次一举。

聊一聊Android的第三方开发组件相关推荐

  1. Android—App—必备开发组件—调试工具篇—Stetho[配合OkHttp框架使用]

    一.First and Foremost : 测试同学,在测试Android-App时,所需要的其中一个重要的技能即判断页面数据错误后,能迅速定位是服务器接口问题,还是APP逻辑问题.此时就需要知道服 ...

  2. Android原生系统开发如何优雅的提供系统级的API供第三方程序调用?

    目录 故事背景 二.开发步骤 Step1.添加一个专属系统级服务 2.1.1.模仿Android原生服务接口,如WifiManager,规划自己的Manager 2.1.2.为我们的Manager生成 ...

  3. Android插件化开发之解决OpenAtlas组件在宿主的注冊问题

    Android插件化开发之解决OpenAtlas组件在宿主的注冊问题 OpenAtlas有一个问题,就是四大组件必须在Manifest文件里进行注冊,那么就必定带来一个问题,插件中的组件都要反复在宿主 ...

  4. android 界面组件,安卓开发学习周第三篇——Android中的UI组件

    原标题:安卓开发学习周第三篇--Android中的UI组件 在Android APP中,所有的用户界面元素都是由View和ViewGroup的对象构成的.View是绘制在屏幕上的用户能与之交互的一个对 ...

  5. 基于第三方开发Android锁屏

    注:对不住大家,有点粗心了,之前上传的代码确实有问题(原因是AndroidManifest.xml文件里的包名错了,自己在上传代码时手贱改了一下包名,结果AndroidManifest.xml文件中的 ...

  6. 哪些公司开发android输入法软件,六款Android平台第三方输入法软件横评

    虽然现在非智能手机在第三方应用上已经有了相当大的进步,不少已经支持软件后台运行,与智能手机一样可以同时挂QQ.听音乐.看网页等等.不过安装第三方输入法仍然还只是智能手机的专利.记得第一次在诺基亚668 ...

  7. Android应用安全开发之浅谈加密算法的坑

    <Android应用安全开发之浅谈加密算法的坑> 作者:阿里移动安全@伊樵,@舟海 阿里聚安全,一站式解决应用开发安全问题     Android开发中,难免会遇到需要加解密一些数据内容存 ...

  8. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块...

    尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...

  9. 《Android和PHP开发最佳实践》一1.3 如何学习Android和PHP

    1.3 如何学习Android和PHP 前面我们已经讨论过"为何学"的问题,大家应该对Android加PHP这套应用开发解决方案有了大致的了解.接下来介绍"如何学&quo ...

  10. 国内研发!适用于安卓应用程序的 Word文档功能开发组件来啦!

    你是否在寻找一款工具能够在Android应用程序中的Word文档管理的开发工具?那么,好消息来啦!Spire系列文档开发组件又添新成员,专门用于在 Android 手机应用程序中创建.读取.操作和转换 ...

最新文章

  1. 中石油-高精度除法-java版
  2. 抖音上测试年龄星座的软件,抖音年龄计算器
  3. 关于sharepoint 里面的时间和Moss对象模型取出来的时间不一致问题
  4. 一文讲懂什么是三层交换机、网关、DNS、子网掩码、MAC地址
  5. 5、vsphere6-ESXI主机的安装及配置
  6. CRM数据库表COM_TA_R3_ID的数据来源
  7. thinkphp-许愿墙-2
  8. Javascript 强制浏览器渲染Dom文档
  9. 学习c++一点一滴----读取注册表
  10. [转载] 语言程序设计第4版黄洪艺_计算机二级教程 Python语言程序设计 第8章python计算生态...
  11. Response AddHeader使用实例
  12. ASP.NET MVC和jQuery系列一:入门篇
  13. 2011年计算机控制期末,2011计算机控制技术期末复习题详解
  14. 史上最详细的Maven安装教程以及Maven和eclipse集成
  15. 怎么改变图片的尺寸?教你在线修改图片尺寸大小
  16. [我叫以赏]Python获取B站UP主粉丝数
  17. Oracle查询语句中SYSDATE与HIRE_DATE的区分
  18. 重新启动计算机以关闭用户账户控制,win10如何彻底关闭用户帐户控制?
  19. 从 Quora 的 187 个问题中学习机器学习和NLP
  20. AI与未来文明:人工智能能否重塑人类文化,改变社会生活?

热门文章

  1. Fragstats4.2之计算景观格局指数(一)
  2. 计算机毕业设计ssm汽车租赁系统42876系统+程序+源码+lw+远程部署
  3. vsftpd的参数说明和虚拟用户配置
  4. iOS实现音频和视频播放-运用AVPlayer
  5. php 阻止ip代码,php – 如何阻止100,000个独立的IP地址
  6. 富途证券招股书解读:近2个月客户资产下降
  7. 幅相曲线渐近线_对数幅频特性渐近线的绘制
  8. 中望3D 智能门锁建模
  9. 解决vue+php跨域问题
  10. 计算机四级软考数据库系统工程师教材