你如何成为 Android 开发高手

本文介绍了成为Android开发高手的三个层次:系统驱动、框架中间件和App开发。建议从开源项目入手,如Foursquare客户端,学习多线程、HTTP、MVC设计模式。强调了理解Android生命周期、UI设计、Java与NDK结合的重要性,并提到Android开发需要的基础知识,包括Linux、Java、C/C++、UI设计和源码阅读。同时,建议熟悉Android SDK、NDK和开源社区资源,积累项目经验。
摘要由CSDN通过智能技术生成
以下适合没有开发经验者,对于码农不适用: 
1、你得喜欢开发,强烈的感受到那种看到自己的代码运行后得到你想要的结果后的那种幸福的感觉。(上c语言课程的时候,只要自己做过作业一般都能体验到这种感觉吧) 
2、找一本好的书。(怎么找?上amazon看看用户的review就差不多知道哪个适合你了) 
拿到书之后循序渐进,不要跳跃阅读(你还没到这个程度),连前言都不要放过,一字一句的读。里面讲到例子的时候,打开开发平台跟随例子(不要copy代码,而要一字一句的敲进去,感受语法和开发环境) 
3、如果你看完一章后你发现很多东西不明白,请重新再看这章。(如果看了几遍还不明白,请换一本书,这本书不适合你) 
4、不要开始就尝试看android的reference(还没到时候,庞大的library会让你迷失,进而失去学习的兴趣) 
5、一章一章的跟随书本进行,完成所有的范例(如果有作业的话,一并完成),进行到全书的一半的时候,你应该掌握了初步的开发技能,对android的资源、api的应用也积累了一定的程度,这个时候可以尝试超越书上的范畴。你花在查阅android文档上面的时间应该越来越多,因为你内心汹涌着一种冲动:把书上提到的范例更佳完善化。Ok,你必须开始使用文档,学习各种新的资源和api。 
6、尝试采用项目驱动法看书:打开新的一章,首先看看这一章的范例拟实现的功能是什么,自己思考一下该如何实现,需要使用到哪些新的资源和api,通过查阅文档尝试独立完成。无论最后完成到什么程度,先把程序跑起来再说。之后再去阅读这一章的内容,看看作者是怎么做的,你的方法跟他的方法差别在哪里。 
7、在开始学习开发的时候,时刻保持着自己的学习动力是来自于内心的创造冲动。暂时别考虑什么盈利模式和市场研究。在你写出一个令你自己满意的app之前,不用想着你可以靠这个赚多少钱。否则你会迷失在门口。(退一万步说,即使你最终完成的作品并不能给你带来金钱的收入,你在此过程中收获的快乐也是你无法评估的)能否赚钱是另外一个话题了,因为那是一个市场运作问题,在你学习开发的过程中没有必要过多去关心它。 
8、第一本书完成学习后,可以再换几本书看看(可以泛读,了解不同的作者,不同的写作风格中所给你带来的新的观念) 
9、确立一个项目(我想每个尝试学习一种新平台开发的人,在起始阶段都会有一个模糊的项目),没错就是它,是时候独立的实现它了。这是你第一个真正的项目,不要太庞大。把人机互动给初步建立起来就差不多了,然后有一个不错的UI。这是你的第一个作品,完成之后可以给朋友体验一下,从用户的角度看看它的表现如何。 

10、后面的路还很长,当你走到这一步的时候,相信你会自己规划了...

1. java语言 
2. android ui设计和app交互设计,页面布局,动画效果 
3. android 后台服务 
等等等等 
像楼上周昌说的, 第三个层次就是App开发层次。 
移动互联网节奏非常快,好多东西都是现学现做,建议从开源项目入手,推荐几个开源客户端: 
饭否Android客户端/foursquare开源客户端,学习多线程、http、mvc设计模式 
beem客户端:学习xmpp协议,后台服务与Activity之间的通信。 
摸透这些客户端的精华之后,做一般的app应用就没有太多问题了。难点还是在交互设计上

1. 第一个层次和传统的嵌入式Linux最接近,主要涉及的是CPU、GPU以及外设的驱动以及使能方面。多需要熟悉Linux内核,Android框架定义中驱动的接口规范等等,这部分开源社区的力量最大。这个层次技术主要需求方是是各种CPU和Android设备解决方案供应商。 


2. 第二个层次主要是涉及Android框架中间件部分,如多媒体/3D框架,Java虚拟机等等,这部分Google控制的是最严格的,因为他要控制 Android各种feature以及捆绑自己的移动互联网应用,必须规范中间件。这部分所涉及的软件技术也最多,从各种C/C++库,Java虚拟机性 能,用户体验抽象到数据库设计等等很大的内涵。开发的一般也是选择一个方向发力。另外深度定制Android ROM重点也是这个层次。

3. 第三个层次就是App开发层次,这个层次主要就是利用Android SDK开发了。很多C/C++出身的觉得是用Java开发,其实Java就是啥都是指针的C++,外带try/catch以及垃圾收集,上手其实是很快的。Android程序最重要一点是理解生命周期概念,将一个Activity和Linux进程关系搞清楚,啥时候这个进程启动,啥时候睡眠,啥时候退出,后台的事件循环如何运行的,最后时刻要提醒自己虚拟机在运行,垃圾收集在运行。Google Code上有还多参考代码,在看中学,体会很快的。

另外,本人采用了一种特别的模式来进行Android程序开发:Java只负责界面,用NDK来做各种复杂的业务和数据处理,Java与NDK之间设计好API以及事件传递方式(Android SDK 中Localsocket就可以很好用做事件发送)。这种方式适合C/C++背景的开发人员上手Android,Java无需达到熟练即可。

1. android是基于linux,所以要熟悉linux系统,特别是嵌入式linux系统
2. android平台的程序都是通过Java语言开发的,所以要熟悉java语言
3. android系统级的程序或者底层调用NDK开发,需要用到C/C++
4. 大多数android应用都是客户端应用,所以对UI的设计及界面开发也要有足够的了解。 
5. 高手有很多种,比如做ROM、开发系统应用、一般的WEB手机端应用、Android游戏。。。目前Admob月入$6k左右,勉强实现屌丝的财务自由!
在Android源码上的摸索自认还欠缺火候,大家如果这方面要入门,可以看看我的这个回答
大牛们是怎么阅读 Android 系统源码的?

这个答案仅仅限于Android 应用程序的开发,因为我是Google Play的Top Developer,勉强能够以自己的经历回答这个问题。

1.扎实的基础,包含语言(Java,C++),算法,计算机原理等。
我相信高楼大厦都是一沙一石一砖一瓦,大学时很少缺课,也积极学习新的技术,国内的大学教研水平参差不齐,老师很多也是敷衍了事,我觉得这都不是不学好基础课程的借口。见过很多同事或朋友因为基础不扎实而出现各种技术上提高的瓶颈,我觉得成为一个合格的开发者的首要条件是扎实的基础,当然如果大家且参与工作了,可能时间都碎片化,挤挤时间,为自己补补基础理论,这也会让你的工作更得心应手。

2.Android接口的熟悉
对Android Api诠释的最深刻莫过於于Google 写的SDK Samples了,我开始进入Android开发,就是对照着Android开发文档和Samples来理解的。这个可以分为两个过程,一个过程快速了解全部或大部分的Api。一个过程为根据项目需要来深刻理解和运用某个方面的Api。

3.专一于某个方面的开发
我觉得这个对于Android源码开发也是非常重要的,在庞大的Android源码库中熟悉其中某一个开源库都是非常困难的,所以我给自己的要求是追求开发的深度而非广度,一直以来全职工作也是局限于Android UI部分。
我觉得计算机发展到现在这个阶段,任何一个方面都是成千上万前辈们心血累计的结果,精通某一方面就需要付出极大的努力,而广泛涉猎的结果只会让你精力分散,很难深入!
因为工作大多是从事Android UI部分的,所以我更愿意从事图形相关的开发,开发了一些流畅的游戏以及一个高效的Launcher(操作界面绘制到60fps)。嗯?当然工作还是业余收入也还不错!很多公司也愿意招从事某方面的人。
根据近期面试Android高工的经历与自己越来越广的经历再次对答案进行补充(由于答案范围其实可以扯的很远,以下答案就只涉及到技术知识点层面)。

首先上一张Android架构图(面试有很大几率被问,不熟悉的趁这机会赶紧补补~)


从Android架构得出我们必须要掌握的知识点:
1、Linux知识(Android是基于Linux内核的,编译Android源码也必须在Linux上,所以必须掌握Linux的基础知识(操作区别、简单指令、进程等),可以装个VM虚拟机没事玩玩)
2、C/C++知识(Android大部分核心库是C/C++的动态链接库,系统大部分隐藏API都是在这里面的,而且你看哪条面试中没写要求熟悉NDK(Java+C/C++形式)开发,所以必须熟悉C/C++知识,C语言看谭浩强的《C语言程序设计》就可以,NDK推荐看《Android C++高级编程》一书,刚出的)
3、Java知识(Android是80%的Java package,IDE和语言都是Java,没理由不具备精通级的Java知识(尤其是多线程、I/O流、面向对象思想、http和socket网络等,面试必问题),Java的进阶书书大家都知道就不再提了)
4、T-SQL知识(可以只是基础的增删改查和子查询)

其他做为高工要掌握的知识:
1、数据结构(基础)
2、设计模式(推荐看《大话设计模式》,然后再带入Android API看设计模式在Android中的应用)
3、Web开发语言+Html+JS(推荐php和jsp,做到最后怎么着都得熟悉一门Web开发语言)

以上皆是知识点,以下是我认为可以有的一些点:
1、GitHub(这简直就是摆在那里的财富,各种你需要的Android的例子上面都有,只是你必须要学会去搜索)
2、Android ROM(想想自己做一个专属的ROM屌不屌)
3、afinl、thinkandroid等各种Android开源快速开发框架(要是能参与开源项目就离大牛不远了)
4、iOS开发(我是很羡慕人家用苹果机我用win7系统的)
5、各种Android开发论坛(学习最快的形式是交流和传授)

自学的话平时就多看一些官方文档,帮助文档也是一个很好的参考资料,多看看,平时多敲代码,多看住哟啊哈斯看规范,看完之后去敲代码主要是在实践过程中发现错误,多做项目自然多遇见问题,遇见问题解决问题,下次自然就知道怎么解决,在实践中发现真理。


安卓开发学习书籍

建议买 精通Android2 ,或者 Android2高级编程 这两本书,讲解的细致,但是一定要结合sdk来看。国内的不要买。。。。看完之后就可以自己动手做做项目了。

看更多的学习视频

这也是许多自学android开发的新手必经之路,毕竟看书只有你一个人的思维在活跃,看视频至少是两个人的思维在碰撞,你能发现你与别人的不同,如果你有心,你就能进步更多。基础知识不用我担心太多,至少想学android的,找基础知识的资料还是没有问题的。在此你也可以试着了解一些android的基础视频。也可以加入一下开发者的QQ群367554077,去初步了解一下。感受一下氛围。这个我个人觉得很有意义。

安卓开发学习学习网站

推荐你关注DevStore(主要是开发者服务商店)还有csdn和开源中国,都是开发者经常关注的网站。

DevStore(全球首家开发者服务商店)是最先提出“开发者服务商店”的理念的,主要是整合开发者会用到的服务,可以实现在线对比评测,省去自己去网上搜索寻找的过程,还有sdk配置过程,很方便的,嘿嘿,我还在这个网站上写评测挣过外快呢。

csdn是 中国最大的开发者技术社区,牛人还是很多的

开源中国是目前国内最大的开源技术社区,主要是软件下载,源码托管

思考,没错,就是“想”。想你怎么把这三块儿合在一块儿,让自己的学习效率更高;想你在学习中遇到哪些障碍,最后是怎么解决的,这很重要!

1、多用一些 Android 应用,找一些你觉得做得得好的,比如 google+里头的列表动画和其流畅性,问问自己:我可以做到吗?怎么来做?然后就动手做吧;
2、多看一些优秀的开源项目源码,比如 slidingmenu,volley;
3、看 Android 的源码,看的时候最好有目的性,比如想深入了解 UI,就看一下 Android 界面绘制一整套;
4、对自己的代码高要求,为什么我不能做得像它一样流畅呢?

因为大多数人学习android就是为了找一份工作,你倒不妨去招聘网站上去看看招聘android开发人员,都需要具备哪些技能,现在的社会就是要改变自己去适应社会,这样你才有机会,而不是等着工作的机会自己找上门。
就拿我个人来说,刚开始学习android开发也是没有头绪,刚开始工作的才4K,后来自己不断改变自己去适应社会,不到2年的时间,我的薪水已经12K了。
还有一个就是项目经验,多做项目,对android的理解也就水到渠成了。
就这样吧!想到什么就继续填坑...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值