(本文转自stormzhang的公众号,Crtl CV下来用以保存)
你们期待的终于来了,我可以算作是Android自学界的鼻祖了,之前自学的故事与分享的知识、经验影响了无数人,如今几年过去了,我经常收到不少人的感谢信,很多当初看我的教程的初学者如今已经在Android开发小有成就,而且让我欣慰的是他们也依然延续我的分享精神,影响更多的人。
如果你现在依然是一个Android初学者,不妨到这里看下我的自学故事:
如何自学Android编程
https://www.zhihu.com/question/26417244
今天废话就不多说,就来给大家推荐一份详细的自学教程,帮助你从入门到进阶到精通。
准备
自学之路是一项很苦逼的差事,自学的人很多,但能真正坚持下去的很少,在准备自学Android之前你需要具备以下基本能力能帮助你坚持到最后。
1、对Android开发、对互联网感兴趣,兴趣是最好的老师,只有发自内心的感兴趣才能真正坚持下去;
2、强大的学习能力,既然自学那学习能力肯定是必备,要有很强的求知欲,持续不断的学习能力才有机会走的更远,注意,是持续不断的学习能力;
3、解决问题的能力,自学过程中肯定会遇到各种各样的坑,这个时候不要急躁,不要气馁,不要怕耗时间,一步一个脚印去解决问题,这会为你今后走上工作岗位带来极大的优势;
4、设定一个目标,比如我当初测试转行开发,自学Android的目标简单直接,因为开发比测试工资高,我转行就是为了多挣钱。我想大部分人的目标应该都跟我同感。
Java基础
Android开发是基于Java语言的,所以毫无疑问的是必须要掌握Java基础,如果你完全没有任何Java基础,这步是必须要好好学习的,如果已经有Java基础的,这步可略过。
对于很多初学者来说入门往往是最难的,如果只看书完全看不下去,也很难理解,所以强烈推荐初学者以书籍结合视频的方式学习Java基础,所以给你推荐:
《Java语言程序设计》,优点是非常基础,适合初学者,建议只要看到前十四章就ok了,第十二章也可以略过。
http://book.douban.com/subject/6529833/
Mars老师的Java4Android视频课程结合学习,便于初学者很好的理解与入门。
http://pan.baidu.com/s/1c1beYo4
如果每天至少坚持学习3-4小时的话,这一阶段差不多花费1--2个月之间都算正常,范围因人以及花费的时间而异。
Android入门资料
经过上面的学习相信你已经掌握了Java基础了,是时候开始正式进入Android学习的阶段了。
Android学习之路
我自己整理的Android开发详细资料,这篇博客影响了无数Android开发者,可谓Android开发必备,某种意义上来说,自学Android有这篇博客足够了。
http://t.cn/Rz79nfR
《第一行代码》
郭霖大神的最新力作,全书由浅入深、系统全面地讲解了Android软件开发的方方面面,而且是针对Android 4.0进行讲解的,非常适合Android入门。
http://book.douban.com/subject/25942191/
Mars老师的Android开发视频教程
http://marschen.com/portal.php
极客学院Android开发视频教程
http://www.jikexueyuan.com/path/android/
慕课网的Android视频教程
http://www.imooc.com/course/list?c=android
至于入门书籍我认为推荐一本适合你的就够了,而且大部分书籍内容大同小异,但是视频教程就就不一定讲解的内容都一样了,大家可自行选择视频教程。
Android开发工具
科学上网
科学上网可以说是程序员必备技能,身为Android开发者那更得会这项技能,不管你是使用Google也好,还是到Android官网查找资料,下载SDK都必须要。可以使用goagent也好,修改host,购买vps、等等方式,这个技能不是本文重点,大家可自行搜索去配置。可以告诉大家的是对于新手来说最简单有效的方式是购买VPN,可以节省不少精力,至于哪个比较好用不敢保证,我使用了两年的个人感觉相对较稳定,感兴趣的可以到我博客主页去寻找。
Android Studio
虽然目前的很多学习资料与书籍都是Eclipse为主,但是Google已经明确未来Android会抛弃Eclipse,所以强烈建议大家直接使用AS,学习的初期花点时间熟悉使用,上手很快就可以对照eclipse方面的教程转到AS了。当让我也在AS1.0刚发布的时候就已经出了一个针对新手的Android Studio+Gradle详细教程,是一个系列,帮助你们更快的入门。
http://t.cn/RbH8Q3V
AndroidDevTools
我是强烈建议Android开发者一定要学会科学上网的,但是如果你觉得暂时还不需要接触外面的世界,那么我的一个朋友搭建的网站,可以让你们无须即可下载使用官方SDK。
http://www.androiddevtools.cn/
模拟器Genymotion
首先建议大家能不用模拟器都不要用,模拟器的启动速度简直是龟速,现在市面上安卓手机很便宜,打算做Android开发没个安卓手机真是说不过去。如果你非要用模拟器那就推荐你用Genymotion,目前来说最快的模拟器。具体可以看我下面的博客,最后还是要建议大家不要使用模拟器!!
http://t.cn/R4RvAQd
问任何问题之前都要先去搜索引擎查一下,这会训练你的解决问题的能力,而等你以后工作,实际开发中可以知道,有一大半的时间你是在搜索度过的,很多问题都已经是前人遇到并总结的方案。对于新手来说可能百度勉强够用,但是建议一开始就养成使用Google的习惯,百度在娱乐八卦方面确实靠谱,但是技术方面查出来的东西基本千篇一律,有些答案甚至还会起到误导作用,直到有一天我的老大告诉我用Google,我才知道这个世界上原来还有另外一个搜索引擎,自此便成为脑残G粉,所以一定要用Google!一定要用Google!一定要用Google!!!(重要的事说三遍)
StackOverFlow
用Google之后搜索出来的东西还是习惯性的点击中文结果,直到有一天我发现基本每次搜索排名第一的都是这个网站,于是尝试着点进去用我蹩脚的英语阅读,之后真是相见恨晚的感觉啊,上面几乎能搜到你遇到的绝大部分问题,某种程度上来说推荐用Google搜索的原因之一是因为排名靠前的答案基本都在StackOverFlow上。
GitHub
现在是全球最知名的程序员开源社区,程序员几乎人手一个GitHub账号,在上面你可以找到各种各样牛人分享的开源项目,包括Google、Facebook、Twitter等开源的代码,简直是号称进阶必备,某种意义上看大牛的代码是最好的学习进阶方式。
Android开发资源
了解这些资源你绝对会接触另一个世界,这些资源大部分都是我圈中好友总结分享的项目,绝对干货!
Google Android官方教程中文版
http://t.cn/RvHtswy
Android 开发最佳实践
一些优秀Android开发者总结留下来的经验,了解这些能让你的学习之路事半功倍。
http://t.cn/RwgJoHm
Android开源汇总
GitHub上总结的最全的Android各大开源项目,让你大开眼界!
http://t.cn/R2LTQkN
Android Weekly
了解最新的Android相关的技术有哪些,时刻了解紧跟技术趋势,建议加入邮箱订阅。
http://androidweekly.net/
Android Weekly Cn
我一个朋友做的国内版的Android Weekly,更符合国情。
http://www.androidweekly.cn/
Android源码解析
我的朋友Trinea发起的一个专注于开源项目源码解析及优秀开源项目的分享的网站
http://p.codekk.com/
AndroidDeveloper
我自己的公众号,算是打个广告吧,作为国内Android界的精神领袖,我经常也会在我的微信公众号上分享一些干货,大多为个人原创,时刻紧跟趋势,并且只分享对你们有用的干货,可以微信公众号搜索googdev关注。
国内优秀Android开发者的博客
这里筛选一些有质量的博客给大家,大都是你们的前辈,绝对一线的博客。
stormzhang的博客
http://stormzhang.com/
郭霖的博客
http://blog.csdn.net/guolin_blog
Trinea的博客
http://www.trinea.cn/
魏祝林的博客
http://blog.csdn.net/android_tutor
恺风(Wei)之Android专栏
http://blog.csdn.net/column/details/flowingflying02.html
张鸿洋的博客
http://blog.csdn.net/lmj623565791
张兴业的博客
http://blog.csdn.net/xyz_lmn
更多国内优秀开发者的博客
http://t.cn/RPniqXI
国外著名优秀开发者博客
http://t.cn/RPni7a0
国内外优秀Andorid团体博客
Android Developers Blog (Android开发者官方博客,须)
http://android-developers.blogspot.tw/
美团点评技术团队
http://tech.meituan.com/
腾讯全端 AlloyTeam 团队 Blog
http://www.alloyteam.com/
Android进阶书籍
当你Android开发已经上手之后,突然发现一直进步很慢,处于一个瓶颈了,这个时候你需要这些书籍。
Thinking In Java
Java经典书籍,有中文版的,可能为了学习Android,你只掌握了Java基础,但是远远不够,你需要再重新系统的学习一下Java,这是一本值得反复看的书籍,针对有一定Java基础的人,会让你重新认识下Java。
http://book.douban.com/subject/1474824/
Effective Java
这是一本实用至上的书,78条建议,满满的干货。每一条都说明了为什么最好这样,Java进阶必备,目前为止看过这本书评价最好的一本。
http://book.douban.com/subject/3360807/
App研发录
从App架构的角度,重点总结了Android应用开发中常见的实用技巧和疑难问题解决方法,为打造高质量App提供有价值的实践指导,避免你在实际项目中踩坑,读完绝对有收获。
http://book.douban.com/subject/26649050/
Android开发艺术探索
这是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点,Android开发进阶值得拥有。
http://book.douban.com/subject/26599538/
AndroidUI设计
Material Design
在开发一款Android App之前,你需要了解下Android平台的设计规范,这里有Google最新推出的Material Design中文翻译版。
http://t.cn/RLrJg33
而且 Google 官方出了一个支持库 Android Design Support Library,具体用法见链接。
http://t.cn/R2orZH9
Sketch 3
这个工具只推荐给对UI感兴趣的开发者,这是一个专为设计移动端 UI 的设计工具,作为开发者,不用懂那么复杂的 PS 使用,也可以做非常专业设计。
https://designcode.io/sketch
AndroidApp源码推荐
当你已经做Android开发一段时间,并苦于进入瓶颈,这个时候阅读一些优秀App的源码是最好的学习进阶方式,借鉴一些优秀App源码的设计能获益很大。
iosched
iosched项目是Google I/O的官方app,绝佳的学习项目。
https://github.com/google/iosched
android-UniversalMusicPlayer
也是Google官方作品,代码量不大、注释清晰,简单但全功能的音乐播放器。
https://github.com/googlesamples/android-UniversalMusicPlayer
android-topeka
这个项目是Google前段时间刚发出来,通过这个app,你还可以学到如何设计你app的交互和视觉以更好的和MaterialDesign搭配。
https://github.com/googlesamples/android-topeka
Google的项目有些时候对于初学者有点困难,下面就推荐两个完整的轻量的学习项目。
9GAG
9GAG是我个人的开源练习项目,教你使用Studio、Gradle以及一些流行的开源库快速开发一个不错的Android客户端。
https://github.com/stormzhang/9GAG
AnimeTaste
代码家开源的一个线上关注动画的一个App,同样适合初学者学习。
https://github.com/daimajia/AnimeTaste
Android新技术
你需要了解Android有以下新兴的技术与框架,有些也许还不成熟,但是你应该去了解下,也许就是未来的方向。
Kotlin
作为 Android 领域的 Swift,绝对让你如沐新风。抛弃沉重的 Java 语法,Kotlin 融入了很多现代编程语言的思想,作为开发者,接受新的语言,了解新语言的发展趋势,更有利于开阔你的思路和加深对语言的理解。
http://t.cn/R2DK0SL
React Native
Facebook推出的针对移动应用的跨平台解决方案,目前还不成熟,但是由于Facebook推出,光环效应引起不少目光,这是不是未来暂且还没结论,但是有必要了解学习下。
http://t.cn/RbHmtOk
MVP
MVP越来越多的被Android社区所讨论,有点是能够让代码更清晰,但同时也会增加很多类,写起来更麻烦,不过对于一些不是很庞大的项目却是非常适合的。这里提供一个最先采用MVP模式的开源项目:
https://github.com/pedrovgs/EffectiveAndroidUI
MVVM
因为官方支持 DataBinding,把 MVVM 直接带到 Android 中。它非常高效的开发效率,让你只关心你的数据和业务,从此数据绑定会更加常见。
http://t.cn/RbHmnhE
插件化
一般App上线之后出现bug需要重新提交新版本才能解决,这个就太慢了,由于iOS的审核原因,插件化在iOS开发常见,阿里业务方面这个特别需要,比如双十一出了bug,不能眼睁睁的看着bug出现不管吧,所以阿里系衍生出了一系列热修复的框架,dexposed、AndFix,具体可以见这里详解。
http://lirenlong.github.io/hotfix/
RxJava
最近响应式编程框架RxJava越来越受大家待见,RxJava让你异步任务更简洁方便,以我对技术的敏感性认为RxJava可能会越来越普遍,推荐大家学习。这里有一系列详细的资料教你学习。
https://github.com/lzyzsd/Awesome-RxJava