Android开发的经典入门教材和学习路线?
1.想利用寒假期间学习Android开发,了解到应该先学习Java,不知道选哪本书入门,学习Java和Android有什么经典教材,适合初学者。(有C++的基础,但学的不是很好)
2.入门之后的学习路线是怎样的?到什么程度才能开发一款简单的APP?
不需要看其他的Java书了,说一下我看过的Java书,第一本是 Core Java (豆瓣),英文版本的《Java核心技术》,里面的下册对范型的讨论太多了,有大量的篇幅讲述了SWing这种已经几乎完全被抛弃的技术,还有一大章讲了各种Java内置容器的实现,初学者一不小心就会陷入其中不能自拔,所以不要看,除非你时间实在充裕;其他国产的Java书里面大多则参和很多 JSP相关知识,仿佛学Java就是为了学习ssh,jdbc,这些在Android里面一点用不到。
要说什么Java技术在Android中应用最广泛,在我看来,无非是并发和多线程,随着现在手机核心越来越多愈发明显。
推荐的书单:
- Java并发编程实战 (豆瓣),先是讲述了最基本的锁,对象同步,原子操作等,这是并发的基础,随后切入线程安全容器,这在Android中应用非常广泛,各种异步队列里面一般都维护了一个阻塞队列,比如Volley,典型的生产者-消费者模式+堵塞队列,接下来讲述了Executor框架,ThreadPoolExecutor框架,基本可以搞定Android中大多数多线程操作了,难得的是,这本书还花了一部分篇幅来讲述「为什么UI要设计为单线程」,这对理解Android之中的UI为什么不能在子线程刷新也有一定参考意义。当然,Android的窗口绘制复杂的多,并且以window manager service(wms),binder为核心。最重要的一点,这本书很薄,不会让你翻几页就再也不看了,完全可以一口气看完:)
- Java并发编程的艺术 (豆瓣),同样很薄,与上本书内容基本无交叉,且有一部分尝试从JVM来入手阐述,是一本Java并发方面进阶的书籍,但是仅作扩展视野用即可,实用性与上一本差得多。
- 郭霖大神的第一行代码 (豆瓣),看起来厚,但是字大:),也属于薄书的范畴,内容不需过多重复赘述,我在前面的答案中已经多次安利过了,最适合Android入门的书,没有之一。
- 打造高质量Android应用 (豆瓣),只有200页,满满的干货,大概相当于一本优秀博客的精华,ViewStub、各种控件的自定义(不只是自定义View,包括自定义ViewGroup,比如CascadeLayout,还没听说过这回事的同学建议去【移动开发】如何自定义ViewGroup了解下)、Activity.OnCreate回调中如何获取View的LayoutParams、如何改变Toast的弹出位置、后面更有各种超级实用的经验介绍,直接截图给你们看一下不只是这些,更有很多装x必备点:
- 深入解析Android 5.0系统 (豆瓣),这本书貌似在豆瓣不太火,里面对源码流水账式的讲述也和容易让读者看着头大,但里面有一部分值得读下,那就是Android的核心支撑---Binder机制,从手写Aidl文件->C++来写一个Binder->Java层来写->分析Binder源码->分析Binder驱动,特别是里面的几幅关于Binder的架构图得到熟记,但看这本书时切忌陷进源码细节。
- Android开发艺术探索 (豆瓣),为什么把任大神的这本著作放在最后呢,不管是在实用性还是阅读时机显然都不应该放在最后,原因主要是这本书还在邮寄中:),我还没来得及拜读,不敢妄加评论,不过根据目录来看,我认为在Android入门后就可以看了,属于实用性极强且较针对面试难点的书籍,每个知识点都讲解的恰到好处,毫不拖泥带水。
这个是个不错的新手学习android开发的教学网站。可以试试看,个人感觉很不错。另外从自学的角度来说,android开发未必需要看什么所谓的入门指南啊之类的东西,那个完全是在耗费时间和精力,上面说了很多太过基础和没有使用价值的东西。学校程序设计相关的东西,动手才是最好最快的学习途径。这个网站就是通过叫你动手做来让你学习android开发过程的,真的有很大帮助
关于书方面, 在选书时,要注意避开两种类型的书,一种是“系统源代码分析”型的,一种是“控件使用范例大全”型的;前者不适合初学者,后者权威性和更新速度都比不上API文档,买回来一般翻一翻就放着吃灰了,而且学不到重点。国内早期Android开发的书籍很多都可以归为这两类,近一两年才有所改观。这两类书有一个共同点,就是没有教给你怎么组织项目。楼上提到的《第一行代码》和《Android权威编程指南》我看过,都挺不错,就是使用的IDE是eclipse,建议硬着头皮上Android Studio来开发。
另外推荐三本进阶的书 : Android开发艺术探索 (豆瓣) , Android群英传 (豆瓣) , App研发录:架构设计、Crash分析和竞品技术分析 (豆瓣)。
这三本书都是最近上市的新书,不同于上面那两种类型的书,这三本书基本都是基于工程经验来讲解的,非常实用,内容比较新,有涉及到Android 5.0以后相关API和Material Design的讲解,比较推荐,尤其是《App研发录》,囊括了如何封装一个应用的网络底层,缓存机制,ProGuard代码混淆等等内容,感觉作者可以说是毫无保留的把自己的项目经验分享出来,也许不适合你的项目,但绝对值得参考,《App研发录》比较建议买来看看。
在其它书籍方面,建议了解设计模式,我倒觉得 Head First 设计模式(中文版) (豆瓣)可以买来看看,因为Android经常需要封装自己用的模块,对设计模式的了解还是很有必要的。
=======问题分割线=======
关于题主所谓的简单项目,我不知道是有多简单。如果只是1000~2000行代码的课程设计级别的小demo,那你看过入门书就可以写了,最多简单的划分一下模块就好。但是如果你要做的东西上了规模,你就会发现应用的框架是个必须踩的坑,如果还像做小demo那样写,会很难受,比如Activity负责的东西太多导致难以维护,应用组件间通信,异常处理等。这时候项目需要借助很多开源库,也必须有一定等层次,模块划分,如何划分合适,好扩展,这又是一个需要深入研究的问题,我目前也在研究=_,=
所以关于 学习路线,我的建议是
1. 掌握基础(基本组件,常用控件,生命周期,自定义样式,常用类等)
2.学习使用各种开源库(volley,okHttp,EventBus,ImageLoader,fresco等)
3.看看开源库的源码,学学其设计思想
4.尝试做一个规模比较大的项目
具体的操作,我建议是在学习基础时,跟着书或者自己想一个小项目做,先熟悉项目结构,开发环境,常用控件等,在基础差不多之后,可以自己写后台或者利用开放接口,做一个包含网络模块的项目,引入各种开源库,同时学习开源库。如果这个项目预先规划的很好,做出来效果不错,可以继续扩大,或者自己推倒重来再写一个。这样能积累比较多的经验,以后也可以将项目不断维护,作为一个新技术的实验平台。
======一点小建议========
最近实习发现hybrid很火啊,由于混合App在热更新上的优势,现在react-native,cordova/ionic大行其道,虽然说不可能完全取代Native,但是在“数据展示类”应用上,绝对少不了hybrid,BAT的应用全部都有hybrid模块,建议了解一下这一块。
个人认为
1.Java相关知识:
面向对象的概念
理解引用
继承/多态
接口/内部类/匿名内部类/回调(钩子)/观察者模式
异常(声明/捕获)
I/O:类结构/装饰者模式
容器:List/Map/…
多线程:同步/线程池/…
其中主要学会io和内部类即可,然后就可以去学习安卓的内容了。
2.Android的相关内容主要掌握
以上是我认为做安卓的最基础的知识。有了这些知识便可以做出一款完整的app。常用布局/控件的使用/ListView/…
dialog/PopupWindow/Option Menu/Context Menu
fragment
Activity(UIViewController)/broadcastreceiver/service/..
Activity和Service/activity和fragment
intent的各种属性/显式意图/隐式意图
网络通信http:http协议/httpclient/volley/.../json/xml解析
耗时任务:Thread/asynctask/handler
动画:Tween Animation(iOS核心动画:假象)/DrawableAnimation/Property Animation(3.0,UIView)
各种资源文件:字符串/数组/图片/.../style/attr/selector
3.会使用一些开源项目。github上面有一个安卓开源项目汇总 Trinea/android-open-project · GitHub
4.做一两个项目
关于学习方法:
1.刚开始的时候,可以看视频,这样学起来快一些,刚开始我认为看书是没有用的,通过看视频快速掌握基本东西,可以达到事半功倍的效果。主要参考mars和老罗的视频。
2.这时已经会基本的开发了,接下来可以做一个项目用到平时学习的小的知识点。同样也可以跟着视频学习,网上有一些培训公司的视频,跟着写一个项目就明白软件开发的基本流程了。记住:一定要动手敲代码!
3.这个时候你会发现,做开发基本就是代码拼凑,拿一些现成的开源框架或者以前写过的代码复制粘贴,就是api的调用,已经很容易写一些东西了。就需要从入门阶段进行进阶了,可以将重心放在框架层的源码上面,研究安卓的源代码也是学习安卓的好方式。研究各种manager,Binder,时间分发,view绘制等等,可以做一些自定义的控件,研究开源框架,比如volley等。
4.务实基础,可能在前面的阶段java基础知识还不是很扎实,比如启动一个activity用到xxx.class写代码的时候只是照猫画虎,现在完全可以回头研究到底是什么东西,看java虚拟机等等,3和4也是同步的。
最最重要的就是基础知识,最近在看操作系统,算法这些,非科班出身的一定要重视基础知识。这样才能在这条路上走的更远,更好!
上面说的过程就是我学安卓和踏入it圈子两年以来的经历。最上面列举的java和android的基础知识是有一次和学弟学妹分享做的ppt里面的,希望能帮助到别人。
二,视频,给两个个人觉得不错的 1, http://www.imooc.com/course/programdetail/pid/10。2, http://www.jikexueyuan.com/path/android/。跟着视频学,配合着看书,这门基本算是入了,后面的路还很长,多练习多思考。
三, Android学习之路
四,Google Sample google在github上发布了大量Demo,不可错过的好材料。官方出品,必属精品。
- 配置开发环境
- App中一个屏幕的抽象:Activity
- 屏幕之间的跳转:Intent
- 构成屏幕展示的视图组件:显示图片的ImageView,显示文字的TextView,把组件组成一个列表的视图ListView
- 通过Adapter来控制模型和视图组件之间通信,即如何在视图上展示特定的数据
- 通过事件来处理用户的交互:OnClickListener
传送门在这: Android开发入门经典实例
从语言上说,Android应用开发基于的是Java语言,其实NDK开发中也涉及到了C语言。不过少年,你还是先学会走再开始跑吧。
首先,看书永远是最好的方法,Java语言基础学习推荐两本书:
《Head first Java 》
《Java编程思想》
第一本入门讲解的十分生动,看着漫画就把门入了。第二本是经典中的经典,Java程序员必读书籍。
其次,现在的在线学习资源也十分丰富,觉得看书太麻烦的话看个视频也可以:Java编程导论
有了一些Java基础以后就可以开始学习Android基础开发了,
其实学习Android最好的资料是在这里再推荐几本book:
深入理解Android 1(豆瓣)深入理解Android 2(豆瓣)
这里也推荐几个在线学习资源:
极客学院:http://www.jikexueyuan.com/
英语好的话,推荐U站上的安卓开发微学位,虽然需要付费,不过完成课程的话可以减免,很值!
同样,这方面的MOOC课程也很多啦。。可以自己去Coursera啊edX啊搜索一下。(学会利用搜索引擎,永远是开始学习的第一步
开发应用不需要闭门造车,有很多成熟的三方库和三方控件可以使用。下面介绍一个大型程序员(同性)交友网站。GitHub · Where software is built。在这里你可以找到各种各样的三方库和控件,不仅仅是Android。
在这里建议少年你学习下Git。一个版本管理工具但不只是版本管理这么简单~~~
如何使用Git和GitHub How to Use Git and GitHub Udacity(PS:是一个美女教师上课哦
应用开发完成就要发布了,发布应用就要涉及到应用市场,Google官方开设了一个系列课程,非常详细地讲解了自家Google Play的各种机制,对于初步了解安卓市场来说足够啦:
安卓市场服务:数据分析 Google Play Services: Analytics Udacity
安卓市场服务:地图 Google Play Services: Maps Udacity
安卓市场服务:身份认证 Google Play Services: Identity Udacity
安卓市场服务:移动电话广告市场 Google Play Services: AdMob Udacity
更多的关于市场的事就需要自己摸索了~(关于app推广知乎上也有挺多回答,可以自己搜索一下看看
PS,上面说的是非游戏类app,如果想做手机游戏的话需要学 Cocos2d 或者Unity3D 。
也推荐几个资源吧:
好了,学到这里你可以开发应用了!问题回答完毕!
但是学习Android开发不仅仅是开发一个应用这么简单。你要是还有技能点的话就往下看,不过下面的坑是相当的深,慎入。
想进一步学习Android么?推荐一个网站。https://source.android.com/
研究源码时候会涉及到NDK的部分这就要求你有C的开发经验了。但是少年你现在你只学了JAVA,但是不用怕一颗充满野望的心怎么能被这点事儿难道。其实编程语言思想基本是互通的就是表达方式不一样。
推荐一些进阶学习资源:
C语言:
Linux:
NDK开发相关:
http://developer.android.com/tools/sdk/ndk/index.html
少年,学完上面的内容你基本上就是超神了。但是新的技术不断的涌现,不要放松对自己的要求。你还要冲钻石呢。
想想你离全栈工程师还有IOS,Python,PHP,JS,H5,JavaWeb..........想想也是醉了。
少年出发吧,我们的征程是星辰大海。
2.入门Android,可以看郭霖的《第一行代码》介绍的是基本的Android知识!于此同时,可以学下设计模式推荐看《head first 设计模式》
3.做一些项目练手,就ok了
首先是郭霖大神的《 第一行代码》,确实是一本好书。从安卓基本框架的介绍,到开发环境的搭建,再到到第一个项目的创建,非常详细,很适合入门。最重要的是,这本书对安卓新手非常友好,与HeadFirst系列一样,给我的感觉都非常棒。
然后是 慕课网的安卓教程。个人觉得慕课网的界面设计很好,在上面学习挺舒服的。慕课网安卓教程中大部分是关于各种控件的介绍,期间夹杂一两个小项目(我觉得太少了)。给我的感觉是,跟着慕课网的教程走,进度太慢了。而且,讲师质量也参差不齐。有非常好的老师,也有讲话含糊不清的。
之后是 极客学院。不得不说,极客学院的界面,实在是让人无爱(个人意见)。而且,感觉极客的安卓课程似乎安排有一点乱,我在上面看了一两节课,就彻底放弃了。
不得不说的还有 黑马视频。我在学习《第一行代码》到Fragment这章的时候,感觉自己对基础的掌握还是太薄弱了,于是开始边看书,边看黑马视频。黑马的讲师给我的感觉是非常专业,讲课也非常棒。我在其中学到了很多之前不曾接触到的知识。黑马各期的安卓教程讲的东西都差不多,题主可以下一期试试看,同样很适合入门。
现在看的一本书是《android开发艺术探索》,讲了很多关于源码的知识,以我的水平来讲这本书确实有点难。不过,慢慢啃吧。
与题主共勉!
在接着学习android基础:android疯狂讲义,第一行代码都是比较新的。推荐也是去看看各大教学网站的视频。
android进阶:android开发艺术探索,这本书内容极其强大,看到一半你对android框架层的东西就应该掌握的差不多了(包括ipc,activity加载机制,view的绘制,触摸事件,事件冲突等等)
最后:熟悉android三方jar。
网络通信 okhttp volley等
图片加载 imageloader 等
依赖注入 这个可以自己实现的~
事件驱动 RXJAVA FOR ANDROID(没用过)
也可以熟悉一些android快速开发框架 xutils(基于afinal)
咦 不知不觉把自己的学习路线发上来了。