除了高超的武艺,每位黑忍者还须要装备最好的武器。在软件开发的世界里,好的工具能让咱们的生活变得更轻松,在更短的时间里写出更棒的代码。html
时光回到2008年,那时安卓还很年轻。只有几个相关的博客和谷歌官方的几个应用开发教程,没有函数库也没有代码生成器,甚至连成熟的设计模式也没有(除了OOP和一些Java实践)。今非昔比,咱们已经有了一个成熟的OS、很棒的开发工具、稳定的Eclipse插件和其余IDE,数不清的开发书籍和相关的技术博客。java
这里,我想分享本身在开发安卓应用时用到的工具和一些技巧,但愿可让你们少走一些弯路。android
1. 资源git
全部的UI指南均可以在这里找到。有些时候咱们须要快速地找到资源,咱们须要工具栏图标、主题、其余图标和各类安卓应用须要的设计资源。Android Assets Studio是最佳工具之一。它能够为你生成各类分辨率 (mdpi, hdpi, xhdpi)的启动器、标签、工具栏、菜单图标,能够按照你的配色生成主题,还能够生成工具栏资源 适用于Sherlock Action Bar。转换和缩放DPI是很痛苦的,因此你须要Android Dpi Calculatorgithub
2. UI组件spring
只要遵循安卓官方的UI设计理念,咱们就在重用UI组件。有不少优秀的通用组件能够利用,固然你能够基于他们开发适合本身的组件。你能够在Android Views上找到他们。这里我只提出几个“必备的”组件:sql
Sherlock Action Bar:做者Jake Wharton。这个工具栏设计扩展了支持函数库,能够经过一个API操做各个版本的安卓工具栏。该函数库会在合适的时候自动调用原生工具栏,也能够在你布局基础上封装一个自定义实现。这样你就能够很轻松地为各类2.x及以上的安卓版本开发一个带工具栏的应用。数据库
Sliding Menu :这是时下很是流行的UI模式。Google Play市场上不少最佳应用都采用了这个UI模式,好比Google Plus、Facebook、Youtube以及其余的应用程序都采用了Sliding Menu。编程
Cards:一个很是漂亮简介的UI组件,可让你的应用看起来和Google Home同样。你能够在屏幕上添加一个或者层叠若干个卡片。设计模式
3. 函数库
安卓应用不只仅是UI,还包括了不少颜色和图片资源。Optimus Prime(译著:《变形金刚》里面正义一方的领袖)曾经说过:“真相不仅是眼前所见”。咱们还须要编写后台代码加载和缓存图片、加快与服务器通信、编写数据库操做工具等等。接下来,咱们理所应当地会重用一些最佳实践代码。个人最爱(以及经常使用的工具)包括:
Android Universal Loader:高度可定制图片下载和加载函数库。支持从缓存或文件加载,配置很是简单。
Spring for Android:若是你没有据说过Spring…那么请先去搜索一下。这个最流行的Java框架已经将他的产品线延伸到了移动领域。正如他们所说“移动就是将来”。Spring for android提供了几个很棒的函数库和框架,包括:
Spring RESTtemplate:一个很是流行的基于Java REST客户端。Spring for Android RestTemplate模块提供了一个能够在安卓环境下工做的RestTemplate版本,为你的安卓应用程序提供了一个很是灵活的REST API。
验证支持:OAuth是该领域快速崛起一个的协议。OAuth是一个开源协议,为用户提供第三方应用支持,提供对其余网站受限资源或服务的访问。
Square:他们在GitHub上发布了不少优秀的函数库。我最喜欢的是RetoFit,正如他的介绍那样“一个类型安全的安卓和Java REST客户端”。
OrmLite :编写和维护数据库表一般是很乏味的。OrmLite是一个支持安卓和Sqlite的ORM框架。一般完成这项工做会有数不清的备选工具,可是若是你正在建立一个须要很大数据库的应用也许OrmLite会是你的最佳选择。最好的事情是——OrmLite是经过注解驱动的。
AndroidAnnotations:UI和代码之间的粘合剂,经过它能够编写更少的代码而且轻松维护现存的代码。
4. 测试
做为开发者,咱们会不时地进行一些测试。毕竟,咱们必须确保开发的程序能正常工做。能遵循测试驱动开发(TDD)固然最好,可是有时候咱们只须要一些简单的测试。这只是我我的的见解,最终选择权始终在你手上。
Monkey:检查应用是否会出现ANR(译者注: ApplicationNotResponding应用程序无响应)的最简单、快速和有效的方法。它会在你的应用上执行N次随机点击。你能够在午休时运行一下Monkey。
Safe.ijiami:Android app漏洞检测工具,能够一键上传测试出app存在的信息安全漏洞、签名信息漏洞、源码安全漏洞等,根据存在的漏洞能够相应的提出对应的解决方案,强大的安卓开发必备工具之一。
Android Test :一个基于JUnit的安卓测试框架。它提供了全部类型的测试。你能够为UI/活动编写测试用例。功能测试或者黑盒UI测试不要求测试者对应用的实现细节很是了解,只须要从用户角度了解执行特定动做或者输入特定内容会有怎样的输出结果。这个方法可让开发和测试人员在你的组织里独立地工做。
Robotium :这是一个安卓自动化测试框架,支持原生应用和混合型应用。经过Robotium你能够轻松地编写功能强大、健壮性好的黑盒测试用例。测试开发者能够编写涵盖各类安卓操做的功能测试、系统测试和验收测试用例。此外,Robotium还有一个很是活跃的开发者论坛。
云端测试:你能够在大量设备上运行你的测试并得到全部崩溃和错误信息。相关的工具备:
他们不是免费的,但确实好用。
5. 构建
这是我最喜欢的部分。咱们日复一日、年复一年地工做…..是时候展现本身的产品了。你的应用可能会分付费版、免费版或专属版。他们会有通用的部分和一些专有逻辑。也许你会有一个为100个客户定制的应用,不一样的包名、颜色、名称、各类资源和产品风格…..我刚才提到了构建版本吗?一个开发版、不一样阶段的测试版、生产测试版、客户Beta版…..(软件版本命名)等等。对于不一样的应用,有没有头疼的问题,如何保安全?在现在这个打包党泛滥,各类不安全的移动互联网时代,要是不重视安全这块,简直就是给本身挖坑!在此,我推荐个人经验,解决方案就是寻求第三方服务平台的加密技术,既能够达到本身的目的,又节省了本身去研究的时间、精力!
在一天工做结束的时候,秘密就在维护和管理发布流程。对于这项工做,我只推荐下面几个构建工具。
Ant:我从Ant开始,由于它是Java开发者最熟悉的一个工具。若是你经过Ant构建一个安卓项目,你会编写一个包含了全部默认构建任务的build.xml,它会为你完成一些简单的工做。若是你须要更高级的功能,深呼吸准备好进一步钻研吧……若是要进行依赖管理,这是更艰巨的任务。
Maven:个人一个朋友曾经说过:“Maven管理安卓应用只有Hello World”。Maven从未被谷歌或者安卓官方支持。社区开发的几个Maven插件在安卓构建工具的每一个新版本上都会崩溃。Maven配置困难,但维护和运行很容易。它的依赖管理作的很好,可是不少安卓函数库并无包含在Maven主仓库。
Gradle:谷歌IO 2013发布了Gradle。它是安卓官方支持的构建工具,也是Android Studio IDE的一部分。Spring和其余几个业界巨头也都支持Gradle。我发现Gradle的语法简单并且易于理解。我成功地构建了一个简单项目,一个带有复杂构建逻辑的项目并在24小时内从ant/maven上移植了3个项目到Gradle。Gradle的依赖管理很棒,支持从Maven和Ivy仓库获取(pulling)文件以及多项目构建。我得说:Gradle是新的安卓官方构建工具,相关的安卓插件在不久的未来应该会很快开发并支持,因此继续关注。
我老是会鼓励开发者使用并重用通过检验的概念、模式、框架和函数库。固然,只是针对产品的发布版本。你老是须要学习和实验新工具和新框架。由于即便是最差劲的忍者也须要磨亮本身的武士刀:)
编程快乐!