编程小白的Android自学之路

前期准备

自学是一项很苦逼的差事,自学的人很多,但能真正坚持下去的很少,在准备自学 Android 之前你需要具备以下基本能力能帮助你坚持到最后。

  • 对Android开发、对互联网感兴趣,兴趣是最好的老师,只有发自内心的感兴趣才能真正坚持下去;
  • 强大的学习能力,既然自学那学习能力肯定是必备,要有很强的求知欲,持续不断的学习能力才有机会走的更远,注意,是持续不断的学习能力;
  • 解决问题的能力,自学过程中肯定会遇到各种各样的坑,这个时候不要急躁,不要气馁,不要怕耗时间,一步一个脚印去解决问题,这会为你今后走上工作岗位带来极大的优势;
  • 设定一个目标,比如我是从机械转行编程,自学Android的目标简单直接,因为搞编程比搞机械工资高,我转行就是为了多挣钱。我想大部分人的目标应该都跟我同感。

Android开发要学的技能非常多,技术更新速度还快,但是总的来说:掌握最核心的技术,最规范的开发流程,成为专业、出色的安卓开发工程师也不是遥不可及。为了解决大家的疑问,我专门整理了一张思维导图,用来梳理合格的安卓开发工程师应该具备的开发知识体系。
alt

Java基础

Android开发是基于 Java 语言的,所以毫无疑问的是必须要掌握Java基础,如果你完全没有任何Java基础,这步是必须要好好学习的,如果已经有Java基础的,这步可略过。
对于很多初学者来说入门往往是最难的,如果只看书完全看不下去,也很难理解,所以强烈推荐初学者以书籍结合视频的方式学习Java基础,所以给你推荐:《Java语言程序设计》,优点是非常基础,适合初学者,建议只要看到前十四章就ok了,第十二章也可以略过。

Mars老师Java4Android视频课程结合学习,便于初学者很好的理解与入门。
如果每天至少坚持学习3-4小时的话,这一阶段差不多花费1~2个月之间都算正常,范围因人以及花费的时间而异。

Android入门资料

经过上面的学习相信你已经掌握了Java基础了,是时候开始正式进入Android学习的阶段了。

Android学习之路

《第一行代码》
郭霖大神的最新力作,全书由浅入深、系统全面地讲解了Android软件开发的方方面面,而且是针对Android 7.0进行讲解的,非常适合Android入门。
Mars老师的Android开发视频教程
极客学院Android开发视频教程
慕课网的Android开发视频教程
至于入门书籍我认为推荐一本适合你的就够了,而且大部分书籍内容大同小异,但是视频教程就不一定讲解的内容都一样了,同学们可自行选择视频教程。

Android开发工具

科学上网

科学上网可以说是程序员必备技能,身为Android开发者那更得会这项技能,不管你是使用 Google 也好,还是到Android官网查找资料,下载SDK都必须要翻墙。可以使用goagent也好,修改host,购买vps、 vpn 等等方式,这个技能不是本文重点,大家可自行搜索去配置。可以告诉大家的是对于新手来说最简单有效的方式是购买VPN,可以节省不少精力,至于哪个vpn比较好用不敢保证,我使用了两年的vpn NTFITS 个人感觉相对较稳定,感兴趣的同学可自行下载。

Android Studio

虽然目前的很多学习资料与书籍都是 Android Studio 为主,这是一款Google官方推出的Android开发环境,所以强烈建议大家使用Android Studio进行Android开发,学习的初期花点时间熟悉使用,上手很快。
想了解更多有关Android Studio的技巧可以访问 Android Studio的中文社区

AndroidDevTools

我是强烈建议Android开发者一定要学会科学上网的,但是如果你觉得暂时还不需要接触外面的世界,那我就向你推荐一个国内的镜像网站,可以让你们无须翻墙即可下载使用官方SDK。

模拟器 Genymotion

首先建议大家能不用模拟器都不要用,模拟器的启动速度简直是龟速,现在市面上安卓手机很便宜,打算做Android开发没个安卓手机真是说不过去。如果你非要用模拟器那就推荐你用 Genymotion,目前来说最快的模拟器。

Google

问任何问题之前都要先去搜索引擎查一下,这会训练你的解决问题的能力,而等你以后工作,实际开发中可以知道,有一大半的时间你是在搜索度过的,很多问题都已经是前人遇到并总结的方案。对于新手来说可能百度勉强够用,但是建议一开始就养成使用Google的习惯,百度在娱乐八卦方面确实靠谱,但是技术方面查出来的东西基本千篇一律,有些答案甚至还会起到误导作用,所以一定要用Google!一定要用Google!一定要用Google!!!(重要的事说三遍)

StackOverFlow

用Google之后搜索出来的东西还是习惯性的点击中文结果,直到有一天我发现基本每次搜索排名第一的都是这个网站,于是尝试着点进去用我蹩脚的英语阅读,之后真是相见恨晚的感觉啊,上面几乎能搜到你遇到的绝大部分问题,某种程度上来说推荐用Google搜索的原因之一是因为排名靠前的答案基本都在 StackOverFlow 上。

GitHub

现在是全球最知名的程序员开源社区,程序员几乎人手一个 GitHub 账号,在上面你可以找到各种各样牛人分享的开源项目,包括Google、Facebook、Twitter等开源的代码,简直是号称进阶必备,某种意义上看大牛的代码是最好的学习进阶方式。

Android开发资源

了解这些资源你绝对会接触另一个世界,这些资源大部分都是我圈中好友总结分享的项目,绝对干货!
Google Android官方教程中文版
Android 开发最佳实践
一些优秀Android开发者总结留下来的经验,了解这些能让你的学习之路事半功倍。
Android开源汇总
GitHub上总结的最全的Android各大开源项目,让你大开眼界!
Android Weekly
了解最新的Android相关的技术有哪些,时刻了解紧跟技术趋势,建议加入邮箱订阅。
Android开发技术周报
国内版的Android Weekly,更符合国情。
Android源码解析
一个专注于开源项目源码解析及优秀开源项目的分享的网站。
stormzhang
该博主可以算作是 Android自学界 的鼻祖了,他自学Android的故事与分享的知识、经验影响了无数人,当然也包括我。

国内优秀的Android开发者的博客

这里筛选一些有质量的博客给大家,大都是你们的前辈,绝对一线的博客。
stormzhang的博客
郭霖的博客
Trinea的博客
魏祝林的博客
恺风(Wei)之Android专栏
张鸿洋的博客
张兴业的博客
更多国内优秀开发者的博客
国外著名优秀开发者博客

国内外优秀的Andorid团队博客

Android Developers Blog (Android开发者官方博客,须翻墙)
美团点评技术团队
腾讯全端 AlloyTeam 团队 Blog

Android进阶书籍

当你Android开发已经上手之后,突然发现一直进步很慢,处于一个瓶颈了,这个时候你需要这些书籍。
《Java编程思想》
Java经典书籍,有中文版的,可能为了学习Android,你只掌握了Java基础,但是远远不够,你需要再重新系统的学习一下Java,这是一本值得反复看的书籍,针对有一定Java基础的人,会让你重新认识下Java。
《Effective Java》
这是一本实用至上的书,78条建议,满满的干货。每一条都说明了为什么最好这样,Java进阶必备,目前为止看过这本书评价最好的一本。
《App研发录》
从App架构的角度,重点总结了Android应用开发中常见的实用技巧和疑难问题解决方法,为打造高质量App提供有价值的实践指导,避免你在实际项目中踩坑,读完绝对有收获。
Android开发艺术探索
这是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点,Android开发进阶值得拥有。

Android UI设计

Material Design
在开发一款Android App之前,你需要了解下Android平台的设计规范,这里有Google最新推出的Material Design中文翻译版
并且 Google 官方出了一个支持库 Android Design Support Library,具体用法见链接。
Sketch 3
这个工具只推荐给对UI感兴趣的开发者,这是一个专为设计移动端 UI 的设计工具,作为开发者,不用懂那么复杂的 PS 使用,也可以做非常专业设计。

Android App源码推荐

当你已经做Android开发一段时间,并苦于进入瓶颈,这个时候阅读一些优秀App的源码是最好的学习进阶方式,借鉴一些优秀App源码的设计能获益很大。
iosched
iosched项目是Google I/O的官方app,绝佳的学习项目。
android-UniversalMusicPlayer
也是Google官方作品,代码量不大、注释清晰,简单但全功能的音乐播放器。
android-topeka
这个项目是Google前段时间刚发出来,通过这个app,你还可以学到如何设计你app的交互和视觉以更好的和MaterialDesign搭配。
Google的项目有些时候对于初学者有点困难,下面就推荐两个完整的轻量的学习项目。
9GAG
9GAG是教你使用Studio、Gradle以及一些流行的开源库快速开发一个不错的Android客户端。
AnimeTaste
代码家开源的一个线上关注动画的一个App,同样适合初学者学习。

Android新技术

你需要了解Android有以下新兴的技术与框架,有些也许还不成熟,但是你应该去了解下,也许就是未来的方向。
Kotlin
作为 Android 领域的 Swift,绝对让你如沐新风。抛弃沉重的 Java 语法,Kotlin 融入了很多现代编程语言的思想,作为开发者,接受新的语言,了解新语言的发展趋势,更有利于开阔你的思路和加深对语言的理解。
React Native
Facebook推出的针对移动应用的跨平台解决方案,目前还不成熟,但是由于Facebook推出,光环效应引起不少目光,这是不是未来暂且还没结论,但是有必要了解学习下。
MVP
MVP越来越多的被Android社区所讨论,有点是能够让代码更清晰,但同时也会增加很多类,写起来更麻烦,不过对于一些不是很庞大的项目却是非常适合的。这里提供一个最先采用MVP模式的开源项目:
MVVM
因为官方支持 DataBinding,把 MVVM 直接带到 Android 中。它非常高效的开发效率,让你只关心你的数据和业务,从此数据绑定会更加常见。
插件化
一般App上线之后出现bug需要重新提交新版本才能解决,这个就太慢了,由于iOS的审核原因,插件化在iOS开发常见,阿里业务方面这个特别需要,比如双十一出了bug,不能眼睁睁的看着bug出现不管吧,所以阿里系衍生出了一系列热修复的框架,dexposed、AndFix,具体可以见这里详解。
RxJava
最近响应式编程框架RxJava越来越受大家待见,RxJava让你异步任务更简洁方便,以我对技术的敏感性认为RxJava可能会越来越普遍,推荐大家学习。这里有一系列详细的资料教你学习。

当你下定决心,准备前行的时候,剩下的只有坚持了!

Jason Xu wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!