1、学java
目前,Java语言在Android开发中占据绝对统治地位,所以开发Android的第一步就是学好Java,建议至少完整的看一本Java入门书籍,推荐:
Java语言程序设计 (豆瓣):我原来看的入门书籍,我老师推荐的,分为《基础篇》和《进阶篇》。
Java编程思想 (第4版)
(豆瓣):从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),更讲述了java语言的前世今生,语言特性,设计理念等等,阅读本书需要一定的java基础,个人经验,建议至少看完《Java语言程序设计-基础篇》再看这本书。
2、学Android
第一行代码
(豆瓣):郭霖大大编写的Android入门书籍,推荐这本书的原因有两个,一是郭霖大大的语言通俗易懂,二是这本书很新,是基于Android4.0的入门书籍,根据友盟指数的统计,Android4.0以下的设备已不足10%,所以,你现在入门,抛弃那些仍旧停留在Android2.x的入门书籍吧。
AndroidDevTools:从开发工具到入门教程,从代码规范到版本控制工具,一切与android相关的都在这个网站上,Android入门请参考该网站的
Android Dev Tutorials 模块。
Android学习之路:stormzhang大大编写的Android入门文章,对于有一定java基础的人来说,Android入门有这一篇文章就足够了。(该文章同样被收录在AndroidDevTools中)
郭霖的专栏:郭霖大大CSDN专栏。
stormzhang.com 的页面:stormzhang大大的个人博客。
3、遇到问题怎么办
Google:用google搜出来的结果比网络质量高。至于如何不翻·墙就使用google请自行知乎,但是作为一个Android开发者,你早晚要学会翻·墙。
博客园 - 开发者的网上家园
博客频道 - CSDN.NET
Stack Overflow:国外的开发者问答社区,无需翻·墙。
GitHub · Build software better,
together.:国外的代码托管平台,这里有很多Java/Android开源项目,无需翻·墙。
2. Android编程开发怎么学_安卓编程入门自学
学习分三个阶段:
1,Android基础阶段:平台架构特性(JAVA/C)Market/应用程序组件环境搭建与部署/打包与发布AVD/DDMS/AAPT调试与测试相关资源访问/资源制作Activity/Service/BroadcastReceiver/ContentProvider/原理(生命周期)及深层实现
2,Android进阶初级:组件Widget/菜单Menu/布局Layout详解Xml解析(Pull/Dom/Sax)/JNI解析SQL数据库原理,。
SQLite//File详解多媒体Audio/Video/Camera详解
3,Android进阶高级:蓝牙/WIFISMS/MMS应用实现深层次解析GPS原理。
实现/进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节2D图形库(Graphics/View)详解SDCARD/传感器/手势应用实现
(2)自学android编程扩展阅读:
知识体系
1、Unix/Linux平台技术:基本命令,Linux下的开发环境
2、企业级数据库技术:SQL语言、SQL语句调优、Oracle数据库技术
3、Java语言核心技术:Java语言基础、Java面向对象编程、JDK核心API、Java集合框架、Java网络编程、JavaI/O编程、Java多线程编程、Java异常机制、Java安全、JDBC、XML
4、软件工程和设兆祥计模式:软件工程概述、配置管理及SVN、UML、基本设计模式
5、Android应用开发基础:Android开发平台、EclipseADT开发环境、AVD及传感模拟器调试、Android核心组件、Android常用组件、Android高级组件、文件及网络访问、SQLite数据库编程、后台服务编程
6、互联网核心技术:HTML、CSS、JavaScript、好薯JQuery、Ajax应用
7、Android高级应用开发:音频视频摄像头、互联网应用、GPS和位置服务、GoogleMap、2DD绘制、传感器开发、游戏开发、电话及SMS服务、网络BluetoothWi-Fi等。
8、Android系统级开发:移植、驱动、NDK(C方向)。
9、JavaEE核心技术:Servlet核心技术、JSP核心技术、Struts、Spring、Hibernate框架友猜者。
3. 如何自学 Android 编程
如果你已经确定了学习Android的目标,那么,应该提前做好哪些工作、先打下哪些基础呢?
首先,你最好先熟悉一门编程语言,现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程,只是很多同学在大学期间并没有好好学习,如果对它掌握的不太好或者很久没用了,建议先从将其好好复习一下,将其基本的语法再好好回顾一下,最好能搭建一个环境来运行、调试它。如果没有学过,不妨也提前学习一下,可以参考清华大学出版社出版的谭浩强老师的《C语言程序设计》,推荐这本书的原因,一是它已经经过了多年的考验,应该说还是比较严谨的;其次就是大部分的高校所开设的C语言使用的教材都是用它作为教材,因此无论是购买还是借阅,都容易找到。另外,华清远见网站上也有一些这方面的教学视频,可以结合来看。
其次,如果你后续有志于游戏方面的开发,你最好具备一定的数据结构和算法基础知识。这一点是我在华清远见的讲台上,给学员们坚持强调的。虽然现代的高级编程语言中,其类库中已经帮我们实现了大部分的数据结构,一般情况下,我们直接使用即可。但如果你能对其原理有所了解,当你需要在这些数据结构和算法中间的时候,你可以能更加的清楚到底应该选择那个数据结构或者算法。另外,在图形图像处理上面,线性代数的作用也非常重要,如果能掌握一点这方面的基础知识,无疑也会在后续的学习中如虎添翼。举个例子,在Android中,有一个用于图形变换的类Matrix,用起来稍有点难。其实它的理论基础就是线性代数中的矩阵,如果你了解矩阵的基本算法,这个类的使用可以说就易如反掌了。
第三,因为Android应用的开发语言用的是Java语言,并且在Android中也用到了Java核心类库的大量的类,因此,在学习Android开发之前,可以先把Java基本语法和Java SE的基础类库好好学习一下,例如:Java中的IO、网络、线程、List、Map、Tree等数据结构。现在的大学里也有不少的院系开设了Java课程,教材和图书也非常丰富,如果你所在的院系没有开设,也可以从其他开设了这个专业的院系同学那里借阅一下,并认真完成他们所布置的作业,争取自己能动手编写出一些简单的Java应用。如果自己购买图书,可以购买《Java核心技术,卷1(原书第8版)》这本图书来学习。
第四,因为在Android中,会用到数据库来存储数据,因此,也可以提前对数据库知识做相关的储备。在Android所使用的SQLite中,其语法是遵循标准的SQL-92语法的(当然和企业级数据库如Oracle等比较,功能上要弱很多),有条件的话,最好也能安装一个数据库来进行实际的操作。从易用性和资料完备性来说,建议大家使用Microsoft SQL Server或者MySQL就可以了。它们都是我们学习数据库的好平台。另外,如果曾经学习过数据库原理或者关系代数,那么,在学习数据库的过程中,也可以再好好地复习一下这些基础知识,对我们理解数据库大有裨益。
最后,我们结合华清远见3G学院的“3G Android系统开发就业培训班课程体系”来谈谈Android开发的学习方法。
Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大。因此,一个好的学习方法对我们学习Android开发很重要。因此在华清远见的课程体系设计中采取了循序渐进、将大目标分解成多个小目标,逐步达成对Android开发从应用层到底层系统及驱动开发全面掌握的目的。
例如,可以先从Android的应用开发开始,等到对应用掌握的比较熟悉了,开始慢慢阅读一些Android 应用框架层的源代码,然后再渐渐往下去了解Android的JNI、Libraries、Dalvik虚拟机、HAL层、硬件驱动、Linux内核、ARM技术体系架构等,虽然近期Intel宣称要让Intel芯片支持Android系统,但在可预见的时期内,在移动设备上,ARM的优势应该还是不可撼动的。
具体来说,可以先通过在开发板上构建一个自己的Android系统,了解Android系统的整体架构和启动过程,由此先对Android有一个初步的了解;接下来,学习Android的应用开发,在这里可以先学习Android的几个主要组件、UI组件,先对Android应用开发有一个感性认识。在能够熟练搭建用户界面后,再逐渐来丰富应用的功能,例如:加上事件处理,使其能够和用户互动;加上数据存储功能;加上联网功能等等。在学完应用后,在此基础上来学习游戏编程,先了解游戏设计的基本思路,然后开始从小的游戏、小的模块开始做起,到最后能完成一个类似于现在热门的《捕鱼达人》这样的游戏。在掌握了这些应用层级的内容后,可以去了解如何在Android应用中通过JNI去调用C/C++的接口,再往下学习Linux的内核和驱动开发如字符设备驱动、Flash设备驱动、网络设备驱动等等;再在此基础上,去学习Android驱动开发、HAL(硬件抽象层)开发、ARM体系架构和指令等等内容,这样,Android开发的整个体系就都贯穿起来了。
当然,因为时间有限,而底层部分的内容比较庞杂,因此,在真正去做这部分工作之前,我们只需要对其基本原理有所了解,做好相关知识的储备,能够根据老师的指导来完成相关的实验。这样在后续的工作中,就可以方便的往这方面发展,让自己的事业更上一层楼。