安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少

除了高超的武艺,每位黑忍者还需要装备最好的武器。在软件开发的世界里,好的工具能让我们的生活变得更轻松,在更短的时间里写出更棒的代码。

时光回到2008年,那时安卓还很年轻。只有几个相关的博客和谷歌官方的几个应用开发教程,没有函数库也没有代码生成器,甚至连成熟的设计模式也没有(除了OOP和一些Java实践)。今非昔比,我们已经有了一个成熟的OS、很棒的开发工具、稳定的Eclipse插件和其他IDE,数不清的开发书籍和相关的技术博客。

这里,我想分享自己在开发安卓应用时用到的工具和一些技巧,希望可以让大家少走一些弯路。

1. 资源

所有的UI指南都可以在这里找到。有些时候我们需要快速地找到资源,我们需要工具栏图标、主题、其他图标和各种安卓应用需要的设计资源。Android
Assets Studio是最佳工具之一。它可以为你生成各种分辨率 (mdpi, hdpi, xhdpi)的启动器、标签、工具栏、菜单图标,可以按照你的配色生成主题,还可以生成工具栏资源 适用于Sherlock
Action Bar。转换和缩放DPI是很痛苦的,所以你需要Android Dpi Calculator

2. UI组件

只要遵循安卓官方的UI设计理念,我们就在重用UI组件。有很多优秀的通用组件可以利用,当然你可以基于他们开发适合自己的组件。你可以在Android
Views
上找到他们。这里我只提出几个“必备的”组件:

  • 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是新的安卓官方构建工具,相关的安卓插件在不久的将来应该会很快开发并支持,所以继续关注。

我总是会鼓励开发者使用并重用经过检验的概念、模式、框架和函数库。当然,只是针对产品的发布版本。你总是需要学习和实验新工具和新框架。因为即使是最差劲的忍者也需要磨亮自己的武士刀:)

编程快乐!

时间: 2024-11-15 04:07:41

安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少的相关文章

UI设计师不可不知的安卓屏幕知识-安卓100分享

http://www.android100.org/html/201505/24/149342.html UI设计师不可不知的安卓屏幕知识-安卓100分享 不少设计师和工程师都被安卓设备纷繁的屏幕搞得晕头转向,我既做UI设计,也做一部分安卓界面布局,刚好对这块内容比较熟悉,也曾在公司内部做过相关的讲座,在此,我将此部分知识重新梳理出来分享给大家!... 分享到:QQ空间微博 为了方便网友浏览,本站具有屏幕自适应功能,在手机等设备上任然具有最优的浏览体验,横竖屏无缝切换. 公告:欢迎来到安卓100

Yahoo! UI Library (YUI) 是一个开放源代码的 JavaScript 函数库

Yahoo! UI Library?(YUI) 是一个开放源代码的 JavaScript 函数库,为了能建立一个高互动的网页,它采用了AJAX, DHTML 和 DOM 等程式码技术.它也包含了许多 CSS 资源.使用授权为?BSD许可证 ? YUI 包含完整的说明文件.它包含了两种元件: 工具与控件[2],和一些 CSS 资源. 工具 动画 协助达成位置移动.大小改变.透明度和其他的网页效果. 浏览器历史纪录管理工具 协助网页程式使用浏览器之上一页与书签(我的最爱)工具. 连线工具 协助管理跨

10款实用Android UI工具库

移动应用的UI设计就好似达摩克利斯之剑,一方面,一个视觉.交互.体验良好的UI可以加强应用在用户心目中的形象和识别性.而另一方面,一个体验糟糕的UI设计不仅无法让用户沉浸在应用中,还会造成用户对应用产生厌恶感.所以说在进行应用开发时,一个高质量的UI对于提高应用下载量有着非常重要的作用.对此,本文特为广大的移动应用开发者献上10款非常实用的Android UI设计工具. ActionBarSherlock:一个独立的设计库,也是GitHub上很火的一个开源项目 Nine Old Androids

常见MFC UI界面库[转]

Xtrme toolkit,BCGControlBar,SkinMagic,AppFace,Skin++,Uskin++,SYGUI,LibUIDK,GuiToolkit,GardenUI等等,除了后两种一个是开源,一个是免费的外,其余的都是收费的. The Ultimate Toolbox http://www.codeproject.com/KB/MFC/UltimateToolbox.aspx GuiToolkit(开源,mfc扩展框架,类似Visual Studio 2003风格)htt

安卓CTS官方文档之兼容性测试套件简介

官方英文文档原文:https://source.android.com/compatibility/cts-intro.html Compatibility Test Suite 兼容性测试套件 How does the CTS work? CTS是如何工作的? Figure 1. How to use CTS 图1. CTS使用流程 The CTS is an automated testing harness that includes two major software componen

造个自己的Vue的UI组件库类似Element

前言 随着前端的三大框架的出现,组件化的思想越来越流行,出现许多组件库.它能够帮助开发者节省时间提高效率, 如React的Ant-design,Vue的iView,Element等,它们的功能已经很完善了. 我写这遍文章的目的:记录自己搭建UI库的过程(对Vue的理解加深了好多)演示地址首先讲一下思路: 平常写组件时,写一个组件要用时直接导入就行了,如你写了一个time.vue,用的时候 import time from '路径' 现在要写一个组件库,是不是把所有组件一个文件夹里(如button

ABP展现层——Javascript函数库

ABP展现层——Javascript函数库 点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之21.ABP展现层——Javascript函数库 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate ASP.NET Boil

开发经验分享(一)

开发经验分享系列文章主要记录工作实际项目中遇到的问题和解决办法,希望能对大家有参考意义. 一.芯片的地址分配和变量地址的指定 芯片的存储区很小,所以要合理利用存储区,在进行地址空间的分配时就需要一定的技巧. 在进行开发时,一定要做好地址的划分. 比如CODE区的0x0000~0x8000作为COS区,接下来的0x8000~0x10000作为文件系统区,依次类推…… 在定义变量的时候,也要注意定义在了什么位置,占用的空间有多大. 比如,我们在XRAM区定义变量和数组: xdata char tem

UI标签库专题五:JEECG智能开发平台 Tabs(选项卡父标签)

mnesia在频繁操作数据的过程可能会报错:** WARNING ** Mnesia is overloaded: {dump_log, write_threshold},可以看出,mnesia应该是过载了.这个警告在mnesia dump操作会发生这个问题,表类型为disc_only_copies .disc_copies都可能会发生. 如何重现这个问题,例子的场景是多个进程同时在不断地mnesia:dirty_write/2 mnesia过载分析 1.抛出警告是在mnesia 增加dump