「技术亦人生」端泽的Android学习百宝箱
发布日期:2021-11-09 22:50:56 浏览次数:33 分类:技术文章

本文共 3260 字,大约阅读时间需要 10 分钟。

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的概念。
    常备教程网站:、
    都是很优秀的网站,区别是前者历史更悠久(许多无节操国人的书籍大段大段抄上面的内容我会乱说?),后者内容更丰富(有种看完后就变成了全栈工程师的错觉,其中也包括Android)。
    教材有上野宣《图解HTTP》,日本友人的书真心不错
  • Git 因为Android本身就是用它来做版本控制的,又因为它已经通行世界,所以是必学技能
    基本用法可以从上面提到的学到,书籍上 蒋鑫的《Git权威指南》似乎是一本全了
  • Linux 我不推荐你在PC下开发,因为我自己就是一个血淋淋例子
    王军的《Linux系统命令及Shell脚本实践指南》很符合我浅尝辄止而又给你宏观认识的心态。
  • Android build
    Android build系统主要包含make,python,shell
    可以看看这篇
    Android make是GNU make的子集。有一本能够从网上下得到的很棒的教材 陈皓的
    Shell 随便看看就好,可以参考笔者的这篇上手文章:
    Python 不熟
  • Java Android开发的主力语言,把这个学深一点会有意想不到的好处。
    Bruce Eckel 《Java编程思想》一本全,但是读起来确实很耗时;李刚的“疯狂”系列也凑合的
  • 设计模式 面向对象思想精华
    程杰的《大话设计模式》,主要是用来过眼瘾的,告诉你代码可以写得这么漂亮,但技术及情况未到的时候,你基本用不上设计模式
  • 英文
    以我目之所见,基本欧美整体素质超前不知多少年。这是确保你能够接触前沿并持续学习的重要保障。
  • 业务
    因人而异,有一些工作任你技术秒杀天下,不懂业务就是白搭。

正餐

  • 工具及SDK等 公欲善其事,必先利其器
    Android Studio、Gradle、ProGuard,你可以在以及stormzhang的找到一些有用的东西
    SDK等资源下载则推荐,你同样可以在上面找到好些教材
  • 教材
    首推Android官网教程,问题则在于被墙以及满目英文读起来总是不那么顺畅(英文达人请无视)。你可看看上的中译版本,但并不是很全的样子
    书籍方面推荐两本互为补充,郭霖的《第一行代码Android》外国某培训机构出品《Android编程权威指南》,其他的不推荐——这是笔者在学校时翻阅了整个图书馆十多本入门书的经验之谈,当然现在有可能已经出现了良作,所以辩证看待此点即可

进阶

关于现在的自己处在什么水平?

这里有一篇来自Futurice的热门文章可以作为对照参考:
你也可以看我的译文:

目前看过的比较好的书有:

- 任玉刚《Android开发艺术探索》对重点知识讲解的较为深入而通透,就是初版错误有点多,记得去作者博客上看看勘误,别掉坑里去了。
- 徐宜生《Android群英传》挺薄的,许多东西就是随便说上几句的感觉,对绘图与5.0新特性讲得比较多。
- 包建强《App研发录》目前最全的Crash查找手册,重思想的书

优质网站

无须介绍

干货多,呈上升趋势

厉害的人

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

  • 王垠的博文给人以思考,打破迷信和盲从
  • 几乎由陈皓个人维护,令人惊叹
  • 《Android开发艺术探索》作者,该书十分良心,进阶必读,其博文倾向于探讨更高级的内容
  • 博文很多,写得很好,主点突出一个“学习过程”
  • Google工程师,值得学习
  • 《第一行代码Android》的作者,活跃于CSDN,博文思路清晰,图文并茂内容详实。更偏重实际代码一些
  • 内容丰富,更新迅速,更偏重实际代码一些
  • GitHub上拥有众多优秀开源项目的高手
  • 微信codek2, Focus on Android, Java, Open Source, Performance Optimization

完整项目

完全明了一整个项目的实现过程是十分宝贵的体验。有助于增长软件开发的大局观以及各种细节。

  • The simplest memo app.很简单的应用,代码质量不错,非常适合学习,印象中就是对于Loader的使用存在一点问题,多注册了观察者。
  • Material Design Notes App.与EverMemo同类型,使用大量开源库+MVP设计模式。
  • AnimeTaste(品赏艾尼莫)是国内首个关注独立动画的网站。 移动版聚焦更新的全球独立动画的传播,让您随时随地能观看动画,分享快乐给更多好友。品味动画,重拾幻想。与EverMemo一样同属代码家出品,他好像比较喜欢纯Activity应用。
  • A beautiful app 简诗 for recording anything in your life with traditional Chinese style.自定义控件做得很不错。

转载地址:https://blog.csdn.net/dbnight/article/details/50381943 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:「深入Java」类型信息:RTTI和反射
下一篇:「译」Android最佳实践指南——GitHub Star 7000+

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月15日 06时02分50秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

下列关于python2.x和3.x的区别说法正确_Python 2.x和Python 3.x版本有哪些区别?【面试题详解】... 2019-04-21
git更换_git命令 2019-04-21
hp-ux 查看系统负载_Linux性能调优 | 平均负载的理解和分析 2019-04-21
elementui的tree组件页面显示不出数据_vue路由及组件 2019-04-21
android hook sensor数据_最近,又有人在谈论Android的前景了!深入解析趋势及必备技术点... 2019-04-21
python 动态tabel的数据爬取_使用requests爬取python岗位招聘数据 2019-04-21
input js number 整数_JS基础简单小结(1) 2019-04-21
二阶差分预测后数据还原公式_xgboost系列丨xgboost原理及公式推导 2019-04-21
docker mysql服务启动失败_docker中mysql初始化及启动失败问题解决方案 2019-04-21
mysql 阿里云 添加磁盘空间_rds mysql磁盘空间包含 2019-04-21
mysql 1364 hy000_mysql SQL Error: 1364, SQLState: HY000 保存错误 2019-04-21
mysqli拓展还能用mysql_最近在学习php,其中使用了MYSQLi扩展,注意是MYSQLi不是MYSQL(因PHP7已经不支持MYSQL扩展了)。... 2019-04-21
java中gui_java中GUI是什么意思?详细图解 2019-04-21
java iso 8601_如何在iOS上获得ISO 8601日期? 2019-04-21
windows8怎么下载python_win8怎么安装python 2019-04-21
linux猜数字程序,用linux实现猜数字小游戏源码 2019-04-21
linux下堆栈溢出实例,堆栈溢出在Linux上沉默? 2019-04-21
python创建nc文件_工具箱第2期 用python玩转NC 2019-04-21
拆分文件_文件拆分与合并 2019-04-21
开发优势_小程序开发优势好处有哪些 2019-04-21