如何自学Android编程?

Hello World !

Posted by Wanglili on April 21, 2016

如何自学Android编程?

转载自:http://stormzhang.com/android/2016/01/21/learn-android-byself/

如何自学Android编程
https://www.zhihu.com/question/26417244

##准备

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

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

##Java基础

Android开发是基于Java语言的,所以毫无疑问的是必须要掌握Java基础,如果你完全没有任何Java基础,这步是必须要好好学习的,如果已经有Java基础的,这步可略过。

对于很多初学者来说入门往往是最难的,如果只看书完全看不下去,也很难理解,所以强烈推荐初学者以书籍结合视频的方式学习Java基础,所以给你推荐:

如果每天至少坚持学习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等等方式,这个技能不是本文重点,大家可自行搜索去配置。可以告诉大家的是对于新手来说最简单有效的方式是购买VPN,可以节省不少精力,至于哪个vpn比较好用不敢保证,我使用了两年的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的习惯,百度在娱乐八卦方面确实靠谱,但是技术方面查出来的东西基本千篇一律,有些答案甚至还会起到误导作用,直到有一天我的老大告诉我用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

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