「技术亦人生」端泽的技术学习百宝箱

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查找手册,重思想的书

优质网站

GitHub 无须介绍
稀土掘金 干货多,呈上升趋势

厉害的人

完成入门以后,除了不断的写代码在实践中提升自我以外,囿于一个人的眼界问题,还是会有许多不明了甚或根本就未遇到的问题。这时一些乐于分享的前辈就是极好的学习对象了,以下列出的前辈可能既写博客又写书还做开源,请自行挖掘。以下排名依个人推荐度分先后:

  • 王垠 王垠的博文给人以思考,打破迷信和盲从
  • 酷壳 几乎由陈皓个人维护,令人惊叹
  • 任玉刚 《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.自定义控件做得很不错。

你可能感兴趣的:(「技术亦人生」端泽的技术学习百宝箱)