Android开发者必知的开发资源

来源:互联网 发布:php加密如何解析json 编辑:程序博客网 时间:2024/04/30 01:51

Android开发者必知的开发资源

随着 Android 平台市场份额的持续猛增 ,越来越多的开发者开始投入 Android 应用程序的开发大潮。如果您是一位 2013 年刚刚入行的 Android 开发新兵,恭喜你,因为这个平台已经在过去几年里变得愈发成熟了,绝对值得住你全情投入。目前来看,Android 现成的开发资源早已经汗牛充栋,我们这篇帖子,就是要在浩如烟海的资源中挑出最重要的那些,呈现给你。

  本帖对 Android 开发菜鸟和中级老兵同样适用,因为本帖重点列出了那些最常用的 Android 开发资源。

Android开发者必知的开发资源

  推荐书籍

  你或许觉得,都 2013 年了,再去看个什么书来学习 Android 开发,这方法应该早就过时了。没错,或许你的想法是对的。但是我们还是推荐按照过时的办法来。理由的话,请参看: Programmers Don’t Read Books – But You Should (作者为:Jeff Atwood)

  我推荐下面两本书:

Android开发者必知的开发资源

The Busy Coder’s Guide to Android Development

  • 《The Busy Coder’s Guide to Android Development》(Mark Murphy 著)。这本书最大的特色就在于它的覆盖广度(此书有超过 2000 页的篇幅),而且更新频率很高(平均每 2 个月更新一次)。这本书对于快速进化的 Andoird 平台来说,应当是很具有榜样性质的。作者 Mark Murphy 本人还设立了常规答疑环节,这样本书的读者就能够向作者直接提问。本书的示例源代码全部都发布在 github 上面。所以综上所述,强烈推荐。
  • 《Smashing UI 》(Juhani Lehtimaki 著)。对于那些关注如何做出顶级 UI 设计的 Android 开发者来说,此书无可挑剔。

Android开发者必知的开发资源

Smashing UI

  developer.android.com 官方开发者站点推荐资源

  在动手编写第一个 Android 应用之前,用心读一读 Android Design 章节。尤其是下面的这些文章:

  • Devices and Displays  (设备和显示)
  • Touch Feedback   (触摸反馈)
  • Metrics and Grids (度量和网格)
  • Iconography (图像研究)

  同时也请下载 Downloads 部分的代码,这些代码囊括了 Android 图标和控件的设计模板,源文件,样式以及无样式图标等等。

  那么读完了这些以后就可以开始编程了么?不,最好连下面的东西也一起读:

  • Best Practices for User Experience & UI (a must read) (用户体验和用户接口最佳实践——必读)
  • Best Practices for Performance  (性能最佳实践)
  • Displaying Bitmaps Efficiently (高性能位图显示)
  • Adding Animations (also see NineOldAndroids library) (动画效果——同时也需要看NineOldAndroids 库的介绍)
  • Tools help (开发工具介绍)
  • SDK Samples (SDK 示例)

  StackOverflow 推荐资源

  很多 Android 核心框架的工程师,开发者布道师以及 Android 开发专家都会经常到stackoverflow.com 上助人为乐。以下是关于 Android 最热门问题的清单。我已经订阅了很多高手的 RSS feeds, 例如:CommonsWare (Mark Murphy), Dianne Hackborn, Romain Guy, Reto Meier, Trevor Johns, Roman Nurik, Adam Powell (感谢, @remdroid!).

  Blogs 推荐资源

  很多博客能够提供给你最好最新的 Android 开发资源

  • Android Dev Weekly (博主 Gyuri Grell)。这是一个极好的博客,可以为 Android 新手提供一手的开发新闻。
  • Official Android developers blog。这是一个绝对值得一看的博客档案,里面的很多东西都是干货,比如:Avoiding memory leaks (如何防止内存泄露), Memory Analysis for Android Applications (Android 应用程序内存分析).
  • Romain Guy。来自 Android 核心框架组工程师的博客。一旦你开始熟悉 Android 开发了以后,一定要阅读他写的 Android Performance Case Study 这篇博文。当然,他的博客还包含一些非技术的内容,比如:great photographer (优秀的摄影师)
  • Codependent(博主:Chet Haase),Chet Hasse 是 Android 动画框架的创始人(Youtube 上的 Android 开发者频道上有 Chet Hasse 的专题节目 DevOps——译者注)
  • The CommonsBlog (博主:Mark Murphy)
  • Cyril Mottier 的 Android 博客。这个博客里的博文都很有深度,而且资源非常丰富。最新更新的博文包括:ListView Tips & Tricks #5: Enlarged Touchable Areas, Tweeted Android Development Tips, The Google Maps Android API V2 Utopia, Android App Launching Made Gorgeous, “Pull-to-refresh”: An Anti UI Pattern on Android.
  • Styling Android (博主:Mark Allsion)
  • Daniel’s Lew 的 Coding Thoughts —— 此博客的作者是美国 Expedia 公司的著名 Android 应用 Hotels and Flights(正式名称叫 Mobiata)的开发人员之一,他的博客经常能给出很多有价值的提示。

  Google+ 推荐资源

  在 Google+ 尚未成为社交网络的时候,它就已经是 Android 开发资源的一块瑰宝了。以下是一些你应该关注的 Google+ 账号: Tor Norbye (他是 ADT 的开发者之一), Dianne Hackborn, Romain Guy, Chris Banes, Roman Nurik, Nick Butcher, Adam Powell, Rich Hyndman, Cyril Mottier, Paul Burke, Jeff Gilfelt.

  记住一定要关注 Jake Wharton 这个人,他是 ActionBarSherlock,ViewPageIndicator,NineOldAndroid 以及其他很多著名的开源 Android 库的作者。

  同时也请考虑加入 Google+ 上的一些社区,例如:

  • Official Android dev community (Google+ 上的官方 Android 开发者社区)
  • Android designer community

  开源库推荐

  以下是一些最有用的开源库项目:

  • ActionBarSherlock,作者是 Jake Wharton。这个库在 Android 4.0+ 版本上通过本地 action bar 实现了 action bar 设计模式,并通过单个 API 和主题在 4.0 之前的版本上做出了一个自定义 action bar 实例。
  • ViewPagerIndicator,作者同样是 Jake Wharton。Paging indicator 组件与 ViewPager 都来自于 Android 支持库和 ActionBarSherlock。他们的最初原型是来自于 Åkerfeldt 的 ViewFlow。
  • NineOldAndroids,作者是 Jake Wharton。这个 Android 库使用 Honeycomb 版本的动画 API,对直到 1.0 版本的 Android 系统全部适用。
  • Universal-Image-Loader,作者 Sergey Tarasevich。这个库具有强大的功能和灵活性,可支持图像的异步加载,缓存和显示。
  • UrlImageViewHelper,作者 Koushik Dutta。 UrlImageViewHelper 可以根据一个 URL 来找到图形,并填充到 ImageView 里,还能实现对图像的自动下载,存储以及位图缓存。
  • Android-BitmapCache,作者 Chris Banes。这是一个很有特色的缓存库,用于缓存 Android 位图对象。
  • DiskLruCache,作者 Jake Wharton。这是一个基于磁盘系统的 LRU 缓存库,主要针对于 Android 平台,用 Java 实现。

  在 github 上搜索[android] 项目,你可以找到更多的开源库。而且,DevAppsDirect 应用提供了很好的功能,去归纳目前已有的开源视图,组件和工具库。

  GOOGLE I/O TALKS 推荐资源

  总的来说 Google I/O的门票现在已经火爆到了一定程度了,你基本上是不可能买到票去现场的,不过所幸的是,所有 Google I/O的主题演讲都会被放到网上,并且提供 PPT 下载链接。以下是 Goolge I/O Android 相关的所有主题演讲的链接:

  2012年, 2011年,2010年, 2009年.

  其中一些主题是我非常喜欢的,如:

  • Advanced Design for Engineers(工程师设计进阶),演讲人 Alex Faaborg and Christian Robertson (2012 年)
  • For Butter or Worse: Smoothing Out Performance in Android UIs(Butter 项目:让 Android UI 性能更加流畅)演讲人: Chet Haase, Romain Guy (2012 年)
  • Navigation in Android(Android 导航)演讲人: Adam Powell, Richard Fulcher (2012)。如果你认为 Android 的 back/up 按键问题很好解决的话,看看这个视频你就不会这么想了。
  • So You’ve Read the Design Guide; Now What?(学完了设计指南,然后?)演讲人:Daniel Lehmann, Tor Norbye, Richard Ngo (2012)
  • What’s New in Android? (Android 更新介绍)演讲人:Chet Haase, Romain Guy, Daniel Sandler (2012)
  • What’s New in Android Developers’ Tools(ADT 更新介绍)演讲人:Xavier Ducrohet, Tor Norbye (2012)
  • Memory management for Android Apps(Android 应用程序内存管理)演讲人:Patrick Dubroy (2011)
  • Writing zippy Android apps(编写敏捷的 Android 应用)演讲人:Brad Fitzpatrick (2010)
  • Developing Android REST client applications (开发基于 REST 的 Android 客户端应用)演讲人:Virgil Dobjanschi (2010)

  停!太多了!

  如果本贴的内容太过丰富,让你觉得应接不暇,没关系,有些内容是专门针对于初学者的,如果你不是初学者的话,你可以只关注本文中那些相对高级一些的主题。

  关于如何有效地选择内容,以下是几点建议:

  • 首先,看书。本文一开始就提到了,你应当要看书。看书能为你打下 Android 开发的牢固知识基础。
  • 订阅本文中提到的博客内容,以及 stackoverflow 的问答内容(通过 RSS)
  • 在你的 Google+ 账户上创建 android-dev 开发圈子(当然,由于某些原因,墙内的朋友们可以在墙内的社交媒体或者论坛上建立自己的 Android 开发圈子——译者注)

  Android 巨星

  在 Andoird 开发者生态系统的持续繁荣的过程中,逐渐涌现出了许多天赋异禀的巨星级开发人员,尤其下面这两位,他们的工作让其他 Android 开发者们受益匪浅。他们是:Mark Murphy 和 Jake Wharton。

  Mark 和 Jake 在 Android 开源项目上面贡献良多,可以说早已功成名就。如果你有幸见到他们,一定要请他们喝喝啤酒,表示感谢。(不过根据回帖的情况来看,Mark Murphy 本人不喜欢喝酒,而有一位叫 Chris Bane 的网友愿意帮他喝,所以要请客的话可以直接请 Chris Bane,并且,如果你一直坚持阅读到了现在,那你就明白感谢 Mark Murphy 最好的办法就是去订阅他的博客 CommonsWare——原文作者)。

  显然,多数 Google 的 Android 开发者和设计师也为 Android 系统做了很多工作。他们中的部分人在本文中也有提到。

  结语:

  那就到这儿吧。现在你应该了解了不少开发信息和工具了,这一切都是为了让你写出优秀的 Android 应用程序!好吧,还有一点:你还需要一个优秀的 Android UI 设计师,不过由于本贴是技术贴,这就不在讨论范围之内了。那么现在,你应该做好充分的准备来开始做你的第一个 Android 应用了。

  如果你觉得我遗漏了哪些优秀的资源,那么就在评论你留言补充吧,我会定时更新这篇文章的内容的。

  祝,编码愉快!

2013 . 05 . 25

程序员是否可以在家办公——在家办公的利与弊

程序员是否可以在家办公——在家办公的利与弊

对软件技术工作者来说,办公的场所对工作效率似乎并没有大的影响——毕竟,大部分软件工程师给人的印象是埋头于电脑前,似乎只要给他们一台能够连上Internet或是公司VPN的电脑,他们就能产出我们期望的代码。在理想情况下,公司还能通过这样的方式节省不少固定工作场所的开销。听上去十足像是个双赢的选择。

然而,时至今日,真正能彻底贯彻“在家办公”的公司却少之又少,Google、Facebook等公司虽然允许员工在“不方便的时候”选择在家办公,但不允许员工长期如此;在“在家办公”方面执行宽松政策的Yahoo!公司,在新老板Marissa上台后,便取消了 允许员工在家办公的政策。

那么,在理想和现实之间到底有哪些差距呢?显然,允许员工在家办公是个充满温情的福利:在忙碌的工作之外,员工总免不了遇到各种突发状况。例如,孩子生病了,家里漏水了,遇到大雪出门不安全,临时需要在家等待新买的洗衣机安装完成……

在这些情况下,为员工提供“在家办公”的福利让员工能兼顾生活和工作,能体现出公司对员工的关怀。另一方面,如果软件技术工作的主要工作产出是由个体的智慧和经验决定的话,那么在什么环境办公理应不是问题。

但实际情况并非如此,对于取消允许员工在家办公的政策,Marissa给出的理由是“为了创建公司新的创新和协作文化,员工必须到公司来报到”。可是,创新不应该是通过个体来进行的吗?通过网络方式进行协作难道不是可行的方式吗?

Zappos公司CEO谢家华在谈论到面对面沟通的重要性时讲到:“虽然Zappos是通过技术进行扩张的,但我们仍然非常依赖于面对面的互动,这一点似乎很奇怪。原因则在于,我们生物形态进化的速度远远慢于技术。我们是一种社会性的物种,天生应该在不同的场合跟人进行面对面的互动,而不只是使用电子邮件和电话,或是 在家进行远程交流。”

我很认同这一点。创造性往往是在不同的个体之间碰撞产生的,而非由单个个体在日常的环境中产生。另一方面,虽然通过网 络协作可以在技术上实现无延时的互动。然而,与面对面的互动相比,基于网络的协作能够传递的信息通常要少得多。在一个有着良性技术文化的团队中,文化通常 依靠身教的方式被不断地传递给加入组织的新成员。然而,远程办公的方式却极大制约了文化的建立和传递过程。很明显,在与一个人比肩而坐,一起完成一个项目 的过程中,我们最终得到的不只是完成工作的代码,还有两个人之间的相互影响,以及通过思维碰撞得到的各种火花。而这些是很难通过远程协作的方式达成的。

另一个在家办公的不利之处在于效率。其实对大部分来说,家并不是一个合适的办公环境,至少对我个人来说就是如此。太多事务会导致分神,而缺乏来自身边同事可 见的压力则会导致工作中容易出现懈怠。我不否认有那么一些人即使在家也能严格地分清工作和生活,但我相信,对大部分人来说,如果选择长期在家办公,恐怕很 难在工作和生活之间划上明确的分隔线。

作为一个技术管理者,我愿意相信团队成员的自觉性,也愿意照顾团队成员偶然会遇到的困难,因此,我愿 意在团队中保留大家在“特殊情况下”偶尔在家办公的权利,但从文化建立、协作、创新、以及经验传递的角度,我更愿意大家有尽可能多重叠的办公时间。只有这 样,才能真正在组织内建立一个高度信任、充满活力的团队。


http://zhan.renren.com/crazypig?tagId=1968&from=template&checked=true