Android开发入门感悟

前言

​ 18级的小可爱们你们好,我是你们的16级师姐欧姆|・ω・`)

​ 大二下学期因为课程实训想逼自己一把,我跟实训小组提议尝试从零开始学习Android原生开发,所以学了一点。其实自认为在安卓开发方面,我也只是刚入门而已,但是你们的天天师兄让我逼逼两句,那我就逼逼两句吧。

我学习Android的经历

​ 先说说我学习Android时候的傻事儿吧。

​ 大二下学期,有一门课的实训是一整个学期那么长的,有比较多的时间供我们学习需要的技术,那时候我也比较天真,所以坑队友选择了自学Android来进行开发,做的是一个App小游戏(截图已经遗失了不好意思)。

顺带一提,实训实训,实践训练,一般是老师布置一个课题,然后学生围绕这个课题进行实践;而在我们专业,实训通常就是做一个互联网产品出来。

​ 事实证明,选择Android做游戏是一个不好的选择,理由如下:

1.当时我们小组的水平实在有限,大家甚至不会Android最常见的开发语言Java,基本上都是现学现卖,当时大家甚至会在Java语法上面出bug。

2.Android并不简单,对小白来说挺不好理解的。Android设计得非常精巧,如果不懂一些面向对象思想和设计模式,那你会感到Android非常匪夷所思。Android系统API本身就包含了许多设计模式,有些时候你会不懂,为什么你要使用一个功能”必须这么麻烦”。比如,Android最常见的控件之一RecyclerView(就是实现一个可以滑动的列表),就算你跟着书本上的代码实现出来了,你也很难理解它为什么要这样调用系统的函数,因为它其实运用了一个设计模式——适配器模式,不知道适配器模式去学这些,只能学到皮毛罢了。相对地,如果你懂这些模式,那就如知乎轮子哥所说的那样:”其实,学一套新的系统和api的难度本来就不大,特别是android这种必须设计成让傻逼也可以写app的系统(就跟.net啥的一样)。很多时候只是为了好奇,看看别人是怎么干的。 “

3.不应该在没有使用安卓游戏引擎的情况下开发Android游戏,因为Android API偏向制作软件应用,界面可自定义的地方不那么多。同样的效果,用Android原生开发会困难一些。如果要开发手机游戏,你最好选择使用安卓游戏引擎进行开发,2D3D都有,网上一搜一大把,而且Unity也是可以制作手机游戏的。

​ 师姐的具体学习过程:

1.自学Java。kotlin已经成为Android的官方开发语言,但是这门语言很新,也不及Java语言使用范围那么广,且Android入门书大多使用的是Java,所以当然是选择Java啦。师姐我学习Java是看学校课程的课本(Java的课就在那个学期),很快就看完了。但是就看那薄薄的课本其实就跟没学差不多,于是我买了一本《Head First Java》来看,这本书其实挺不错的,但是对于学过c++的人来说太简单了,给大一的你们看还差不多(不过我还是看完了)。(顺便,出二手书啦,一本《Head First Java》(689页)九成新,原价79,现在卖20,有意者私微信loveyou100Ohm)

Head First Java

2.自学Android。当时12天我把Android入门畅销书《第一行代码》(570页)上面除了最后一章的全部源代码敲了一遍,学完基本能做一些自己做着玩的App了,甚至复杂些的,琢磨琢磨也能做出来。但是其实很难记住到底学了什么,Android四大组件,活动,服务,广播,内容提供器,一个一个学下来真是嘿嘿嘿哈哈哈。不过我学的时间也有些太短了,所以很多东西没来得及咀嚼消化是正常的,如果你们希望将来做Android开发,那可一定要细吞慢咽,不能只知其然而不知其所以然。Android对我们来说并不好理解,我们小组的其他人也表示“做完实训感觉自己没学到太多”。而我学完《第一行代码》,大概就勉强算是刚入门Android那种水平吧。(不过还是很容易做出一个App的)

《第一行代码》

3.学习的过程中我有稍微了解过Android目前市场人才需求,Android学习路线等。这些迟点再说。

自学Android

​ 总的来说,师姐的经验也并不是那么足,多多少少走了一些弯路。我只能以一个”刚入门的人“的身份,跟你们提一些入门的建议。

为什么要学习Android?

​ 这个呀,每个人都有自己学习的理由吧。对我来说,就是好玩呀。我觉得做Android App比PC端的应用程序开发好玩,因为你可以自己写记单词的App,日记App,并同步到自己的搭建服务器上,你还可以借助手机上面GPS,摄像头,运动传感器等各种功能开发自己的App,不挺酷的吗。

​ 将来我有可能并不会从事与Android相关的职业,但是学了Android也不亏,它其实挺实用的,智能手机的普及程度我就不用提了吧。

​ 学Android可以找饭吃。虽然Android人才需求不及以前,但Android应该挺长时间都不会凉的。原因:Android是开源的,很多公司都在深度定制系统,并有Android系统控制的智能家居,智能手表等产品诞生;现在Android系统已经完善了很多,且有丰富的学习资源,社区;优秀的人才永远是稀缺的,除非整个Android跨了 。

Android市场人才需求

​ 其实对于人才需求情况,我不是求职者也不是HR,没法获取到真实的人才需求情况。基本也只能人云亦云了。在我学习Android的期间,不管是在微信公众号,还是在各大博客网站,都随处听得到说Android开发不景气的声音。在我加入的一个Android群中,也有工作了几年的开发者,表示跳槽不好找工作了;看到某个一线城市的招聘信息,也有开发者表示这个薪水不合适。我也有很长一段时间被影响而觉得悲观。

​ 但是我也听到了很多不一样的声音,有人说这个时候Android市场其实是稳定的。

​ 在2015年春天,HR抢夺最激烈的三种人才是前端、iOS和安卓。而大概在16年左右,安卓,ios已经出现了供需失衡 ,退出热招行列 。

​ 但是市场经济本来就是波动的,不可能拥有一直上升的J型曲线,低端人才的市场容易饱和,高端人才永远是稀缺的。

​ 而且未来技术不会再是单一的,会Android的人才,如果除了Android以外还会ios,或者会js,又或者会python,或者会人工智能,会设计……那会难找到工作吗?当你觉得市场饱和时,不妨给自己加分。

​ emmm,我觉得,如果能抓住校招的机会,还是可以混得不错的吧。而且,现在除了人工智能还一直在吹,也没见到那么多被捧上天的什么技术了。

​ 而且吧网上那些人的尿性,天天唱xxx要凉又不是不知道。举个Java的例子吧:

“Java要凉了”

“Java在某某社区的占比又上升了”

“Java凉透了”

“Java在某某社区的占比又双叒上升了”

​ 所以吧,不用太在意这些,老老实实学习技术,技术不会亏待你的。

Android学习路线

​ 首先,Android入门你需要准备:

  1. 一台不能太差的电脑,因为谷歌推出的Android开发软件Android Studio还是挺吃cpu资源的。Mac最好。说到这个,我突然想起昨天男朋友给我讲的一个梗:如果老爸看上了一部性能不好但是很贵的电脑怎么办?网友:这个时候你就应该掏出Android Studio给这台电脑装上,跟你爸说这可是学习软件,然后再在里面跑个Android虚拟机,成功把那部电脑卡出翔你爸就不会想买了|・ω・`)

  2. 一部Android手机,做Android开发最难以忍受的就是龟速的Android模拟器,有部手机的话会好一些。最好是Android 7.0以上的,新一点比较好。

  3. 你得会Java,Java的入门书单知乎一搜一大把。我在这里吹爆一下《Java编程思想》,TIJ天下第一!不过没有编程基础的话最好还是别看这本,Head First就很不错。

    Thinking in Java

  4. 你得会科学上网。Android Studio是免费的,在官网上面下载就可以啦。但是!但是不翻墙装的Android Studio总是会出现这样那样的问题,所以还是翻吧。

到这里应该就差不多了,然后就是书单了,这里的书单我引用网络上一个比较经典的书单

但我认为这书单还是偏难偏枯燥了些,我觉得最好是先学点Java,然后直接买一本《第一行代码》(第2版)做起App,边做边学更深入一点的Java,完了再学点设计模式,感觉这样入门比较好一点。(但说实话我也只是看了 一本《第一行代码》啊)

Java入门书籍:

《 Introduction to Java programming 》

《 Core Java 》中文译名《Java核心技术》氛围基础知识和高级特性

《Java核心技术(卷1):基础知识(原书第9版) [Core Java Volume I—Fundamentals (Ninth Edition)]》

《Java核心技术(卷2):高级特性(原书第9版) [Core Java, Volume II–Advanced Features]》

Java进阶书籍:

《Thinking in Java》

《Effective Java》

汤涛推荐理由:第二本要反复多看几遍,另外Java学习还有个技巧,把各种代码检查工具报告的警告都正确处理掉,一个不漏,保证你成长飞快。

stormzhang推荐理由:公认的Java进阶必备,《Effective Java》是一本实用至上的书,78条建议,满满的干货。

袁辉辉推荐理由:《Thinking in Java》:非常经典的Java书籍,有些人觉得这个书不适合初学者,可就是我看的第一个本Java书,或许是当初自学Java没有高人指点,便挑选了经典书来入手。看一本经典书,第一遍能理解个大概,能对整体有一个概念,这就可以了,反复多读几遍,细细咀嚼,每一遍都会有不同的领悟。

1、Android入门:

Android Training

Android API Guides

胡凯推荐理由:入门使用官方的这两份文档是最好不过的了,没有比这个更权威,更准确的Android学习资料了。中文书可以随便买两本入门,配合一起看看就好了。在实践的过程中多参考官方的Sample Code,多按照官方的推荐进行代码实践!

汤涛推荐理由:官方文档,权威专业,入门不二之选,正确的入门姿势,对后续的成长帮助非常之大。

《第一行代码》(第二版)

《疯狂Android讲义》

《Android4高级编程》

《Android编程权威指南》

徐宜生推荐理由:全面、基础,内容丰富!基础类型的书只要看一本就够了,用来全面了解知识体系和结构,不用全部精读,只需要有概念即可。

CJJ推荐理由:《第一行代码》作者郭霖,看了郭霖很多博客文章,每一篇都写的很详细,也很用心。这本书大概浏览了一遍,内容浅显易懂,非常适合初学者!
任玉刚推荐理由:《第一行代码》作者郭霖,手把手教你入门,清晰易懂。

袁辉辉推荐理由:《疯狂Android讲义》正是这样一本书,也是我看过的第一本Android书籍,书中并没有深奥的理论,有大量的实例,边看的过程中,边在电脑面前跟着敲了一遍实例代码,最好能做到理解性地敲,而非看一个单词再电脑面前敲一个。我大概花了一周时间把这本书看完并把大部分的实例代码都亲手敲了一遍。《第一行代码》作者郭霖,网上有不少人都推荐这本书作为Android入门书,我大概扫了一遍,知识点较基础,作者文笔不错,书中还穿插了不少打怪涨经验升级的片段,比较风趣。

二、Android进阶

《App研发录》

《Android群英传》

《深入理解Android》

《Android开发艺术探索》

《Android系统源代码情景分析》

袁辉辉推荐理由:《深入理解Android》邓凡平,作者功力深厚,以情景为分支,从framework源代码层面来,深入分析Android系统,非常适合高级应用开发工程师和系统工程师阅读。《Android系统源代码情景分析 》罗升阳,对Android系统的理解非常深,老罗知识体系很全,文章从app/framework/native/kernel等全方面剖析,这是Android界的尽人皆知的大牛,“老罗栽树,大家乘凉”,非常值得一看,前提要是有扎实基础。

stormzhang推荐理由:《Android开发艺术探索》这是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点,Android开发进阶值得拥有!

任玉刚推荐理由:《Android开发艺术探索》,作者任玉刚。分析android核心知识点,直指高级工程师进阶要点!(作为艺术探索一书的读者,我也是激励推荐的!!非常赞的一本书!)

《Clean Code》

《Clean Coder》

汤涛推荐理由:进阶是个大话题,只看一两本是不够的,甚至只看书也是不够的,能进阶到什么程度只能靠自己积极主动的积累。 硬要推荐的话,就不说 Android 的书了,市面上几本热门书都可以看看。这里推荐的两本,同一人所写,都有中文译本。教你代码怎么写得更好,以及怎么做一个更职业的程序员。

《HeadFirst设计模式》

《重构:改善既有代码的设计》
胡凯推荐理由:在大量实践Android程序之后,我们需要会分辨哪种写法是更优秀的,通过重构来改善既有的代码,通过设计模式的不断理解实践对既有的框架进行优化,追求更加设计良好的程序。

三、Android底层

《深入理解Android ***》系列书籍,邓凡平老师写的系列。

《Android源码设计模式》,结合设计模式分析源码

《Android框架揭秘》,底层架构的一本好书

徐宜生推荐理由:底层书籍对于应用开发者来说,不用过于深入,主要用于学习设计思路和了解底层设计机制

《Linux内核设计与实现》

《深入理解Linux内核》

袁辉辉推荐理由:Android底层是基于Linux Kernel,所以想成为Android全栈工程师,了解Linux Kernel是非常有必要的。这方面书籍较多,我就列举两本《Linux内核设计与实现》,《深入理解Linux内核》。第一阶段只需加深对Android系统整体性的理解,不必拘泥于每个细节都理解,看完能大抵理解kernel进程的管理和调度机制,内存管理和内存寻址,I/O驱动设备(字符设备、块设备、网络设备)和调度机制等有所了解就够了;如果都理解了也就够了,如果想再深入,可以结合Kernel代码多看两遍。

对于18级大一新生学习Android开发的建议

​ 学Android,学Java最好趁早吧,等到学校开始教Java,大学一年半的美妙时光都过去了。

​ 然后就是,你们还年轻,试错成本还比较低,你可以学学这个学学那个,不需要钻牛角尖。我跟你说Android的这些,并不是说你就一定要往这方面的就业努力了,你可以迟点再决定你要学什么找工作。

​ 如果想做技术的话,最好了解一下工作的笔试,面试题目,好心里有个数。比如说,Android的面试,多少会考到一些底层细节,所以你最好读过Android源码。

​ 如果你们对代码没有兴趣,那么一定要尽早放弃,设计也是很好哒!

萤草

​ 最后,我要喊一句,Java是世界上最好的语言!٩( ‘ω’ )و

文章目录
  1. 1. 前言
    1. 1.0.0.1. 我学习Android的经历
  2. 1.0.1. 为什么要学习Android?
  3. 1.0.2. Android市场人才需求
  4. 1.0.3. Android学习路线
    1. 1.0.3.0.1. Java入门书籍:
    2. 1.0.3.0.2. Java进阶书籍:
    3. 1.0.3.0.3. 1、Android入门:
    4. 1.0.3.0.4. 二、Android进阶
    5. 1.0.3.0.5. 三、Android底层
  • 1.0.4. 对于18级大一新生学习Android开发的建议

  • 网页地址复制成功!