Updated on 2016/2/14
谈思想,谈技术,吐槽,不定时持续性更新
概念
Android开发是一个非常宽广的领域,对开发者的要求不尽相同,包括但不限于以下几种:
- 应用开发 世人皆知,声名显赫,优质App的开发少不了各种高精尖技术的支持,尤其以网络相关为大头,后端架构为魂骨(或者说这才是本身?!);与设计师还有产品经理相爱相杀,以打造用户体验一流的应用为至高目的
- ROM定制 我们一般接触到的是各种国产UI、OS,每次开发布会言必称体验直追iOS,“超前”谷歌设计之举不胜枚举(双义,有一些确实是相当不错,让人眼前一亮;还有一些就十分呵呵了,笔者曾经见过某ROM对于一个“不重启机器切换字体”的实现方案为:粗暴改写TextView让它绘制时读配置加载字体文件……),造就各种应用兼容性问题;目前来看,Material Design仍旧十分不讨他们喜欢,誓要以自己的美学抗争到底
- ODM 手机平板等Android设备的整机软硬件适配开发,不为人知的穷苦行当,从业基数很大。厂商产品背后默默无闻的、流血流泪的不收几块钱的功臣,虽然不知道就趋势来看是不是终将走向消亡,但目前来说影响到的中低端消费者量很大——只不过他们不知道而已。模块化细分,严整的项目日程管理(也就是对交付日期卡得很死),对技术没有高精尖需求,快、稳定即王道,某种意义上来说比较无聊。笔者将之命名为“知识密集型制造业”,其中的老程序员可能熟知某个部分从软到硬的大部分细节,但愣是写不出一个像样的应用。与芯片厂商关系密切
- 特定SDK开发 非常专一,为以上领域提供服务,像是面向开发者的友盟、通讯界的触宝、语音界的讯飞,做得好就好,做得不好……碍于客观因素好像还是得用?
- 芯片厂商 以MTK、高通为代表。偏底层,对ODM及ROM定制提供技术支持(也有可能是坑人)。MTK的服务做得更全更贴心,满天飞的 Feature option完爆高通,针对硬件设备、sim卡、手机出货版本而起作用的MTK plugin也颇有可取之处,但相对而言代码与高通的相比就不是那么的干净了——这其实构不成问题,到了ODM及ROM定制手上总得一番大改特改的。
- 游戏开发 不熟悉,似乎很好玩的样子。
在在这里不会划地为牢,所有领域的相关内容都有可能出现。
入门
看上去很基础的东西全都放在这里。注意基础!=简单,只不过说明这是在技术之道上进一步爬升所必备的基石而已。而且这里的简单同时具有相对性,上一节提到了数个不同的领域,可能对于这一领域来说很基础的东西,在另一个领域中的开发者一生都不会用到——我不是在开玩笑。
预科
Android是个很复杂的东西,不注重补足大局观的程序员很容易一叶障目。如果时间紧迫不妨先跳过此节,但推荐今后还是应该补足一下
-
Web 我认为当下几乎所有程序员都应该具有一些Web知识才是合理的。
很多知识在Android中是有直接演化利用的,比如说UI上符合CSS的万物皆框概念。
常备教程网站:W3school、菜鸟教程
都是很优秀的网站,区别是前者历史更悠久(许多无节操国人的书籍大段大段抄上面的内容我会乱说?),后者内容更丰富(有种看完后就变成了全栈工程师的错觉,其中也包括Android)。
教材有上野宣《图解HTTP》,日本友人的书真心不错 -
Git 因为Android本身就是用它来做版本控制的,又因为它已经通行世界,所以是必学技能
基本用法可以从上面提到的菜鸟教程学到,书籍上 蒋鑫的《Git权威指南》似乎是一本全了 -
Linux 我不推荐你在PC下开发,因为我自己就是一个血淋淋例子
王军的《Linux系统命令及Shell脚本实践指南》很符合我浅尝辄止而又给你宏观认识的心态。 -
Android build
Android build系统主要包含make,python,shell
可以看看这篇理解 Android Build 系统
Android make是GNU make的子集。有一本能够从网上下得到的很棒的教材 陈皓的《跟我一起写Makefile》
Shell 随便看看就好,可以参考笔者的这篇上手文章:光速上手Shell——简单批量文件操作为例
Python 不熟 -
Java Android开发的主力语言,把这个学深一点会有意想不到的好处。
Bruce Eckel 《Java编程思想》一本全,但是读起来确实很耗时;李刚的“疯狂”系列也凑合的 -
设计模式 面向对象思想精华
程杰的《大话设计模式》,主要是用来过眼瘾的,告诉你代码可以写得这么漂亮,但技术及情况未到的时候,你基本用不上设计模式 -
英文
以我目之所见,基本欧美整体素质超前不知多少年。这是确保你能够接触前沿并持续学习的重要保障。 -
业务
因人而异,有一些工作任你技术秒杀天下,不懂业务就是白搭。
正餐
-
工具及SDK等 公欲善其事,必先利其器
Android Studio、Gradle、ProGuard,你可以在Studio中文社区以及stormzhang的《安卓学习之路》找到一些有用的东西
SDK等资源下载则推荐AndroidDevTools,你同样可以在上面找到好些教材 -
教材
首推Android官网教程,问题则在于被墙以及满目英文读起来总是不那么顺畅(英文达人请无视)。你可看看AndroidDevTools上的中译版本,但并不是很全的样子
书籍方面推荐两本互为补充,郭霖的《第一行代码Android》,外国某培训机构出品《Android编程权威指南》,其他的不推荐——这是笔者在学校时翻阅了整个图书馆十多本入门书的经验之谈,当然现在有可能已经出现了良作,所以辩证看待此点即可
进阶
关于现在的自己处在什么水平?
这里有一篇来自Futurice的热门文章可以作为对照参考:Best practices in Android development
你也可以看我的译文:「译」Android最佳实践指南——GitHub Star 7000+
目前看过的比较好的书有:
- 任玉刚《Android开发艺术探索》对重点知识讲解的较为深入而通透,就是初版错误有点多,记得去作者博客上看看勘误,别掉坑里去了。
- 徐宜生《Android群英传》挺薄的,许多东西就是随便说上几句的感觉,对绘图与5.0新特性讲得比较多。
- 包建强《App研发录》目前最全的Crash查找手册,重思想的书
优质网站
厉害的人
完成入门以后,除了不断的写代码在实践中提升自我以外,囿于一个人的眼界问题,还是会有许多不明了甚或根本就未遇到的问题。这时一些乐于分享的前辈就是极好的学习对象了,以下列出的前辈可能既写博客又写书还做开源,请自行挖掘。以下排名依个人推荐度分先后:
- 王垠 王垠的博文给人以思考,打破迷信和盲从
- 酷壳 几乎由陈皓个人维护,令人惊叹
- 任玉刚 《Android开发艺术探索》作者,该书十分良心,进阶必读,其博文倾向于探讨更高级的内容
- harvic 博文很多,写得很好,主点突出一个“学习过程”
- Lucida Google工程师,值得学习
- 郭霖 《第一行代码Android》的作者,活跃于CSDN,博文思路清晰,图文并茂内容详实。更偏重实际代码一些
- 鸿洋 内容丰富,更新迅速,更偏重实际代码一些
- 代码家daimajia GitHub上拥有众多优秀开源项目的高手
- Trinea 微信codek2, Focus on Android, Java, Open Source, Performance Optimization
完整项目
完全明了一整个项目的实现过程是十分宝贵的体验。有助于增长软件开发的大局观以及各种细节。
- EverMemo The simplest memo app.很简单的应用,代码质量不错,非常适合学习,印象中就是对于Loader的使用存在一点问题,多注册了观察者。
- Notes Material Design Notes App.与EverMemo同类型,使用大量开源库+MVP设计模式。
- AnimeTaste AnimeTaste(品赏艾尼莫)是国内首个关注独立动画的网站。 移动版聚焦更新的全球独立动画的传播,让您随时随地能观看动画,分享快乐给更多好友。品味动画,重拾幻想。与EverMemo一样同属代码家出品,他好像比较喜欢纯Activity应用。
- 简诗 A beautiful app 简诗 for recording anything in your life with traditional Chinese style.自定义控件做得很不错。