Android开发者上手宝典(一)

注:

当初学习Android开发的总结,当时写得很细致,很多细小的东西都写进去了,篇幅很大,建议有需要的同学根据目录来跳转。

技术这东西更新很快,一些内容可能有更好地解决方式或工具了,这里我不再另行标注说明了。请理解。

阅读对象

初次接触Java/Android编程,希望开始Java/Android旅程,却又无从下手,茫茫然不知所措,希望得到指点和帮助而且学习欲望足够强烈并最终希望成为Android系统上层维护开发工程师的通讯人才。请打开此书,相信定能解答很多你在入门学习当中的疑惑。完全的小白读者,作者的建议阅读顺序是从头到尾依次阅读;有一些基础但感觉还有所欠缺的读者,请根据需要索引目录,找到所需的知识查遗补漏。做什么都可以有艺术在里面,祝愿大家在成为熟手大牛的路上愉快!Let’s enjoy this journey.

1.怎么从零开始?

至真正的完全小白(编程都没接触过多少的人):既然想入门,至少先去网上查查Java是什么(一门面向对象的热门的编程语言),Android是什么(一个开源的、被大量移动设备所采用的操作系统)。看看就好,不要求理解到多到位深刻,概念即可。

然后,Java基础必须要有,如果一点也没有,那就先看谭浩强先生主编的《Java编程基础》,时间有限的话,至少熟读前1至8章。特别提醒,必须边看边练习(练习的意思是在电脑上敲代码)随书代码实例。需要提醒注意:刚开始不需要幻想自己要进行创造性改造,完整地敲出书上的代码即可,边敲边理解知识点。这里涉及到安装Eclipse,不会的话后面有教。

接着,进行Android开发基础知识学习。选李刚编著的《Android疯狂讲义》或李宁编著的《Ohpone完全讲义》,选其一即可,不要贪心。前者书上的代码详细,照着敲基本都可完美运行,至少读前10章,随书实例一个也别放过;后者书上有较多的开发心得,实例讲解里丰富的前后原因分析比较适合前不着村后不着店的基础匮乏者,至少读前8章。这里涉及到安装Android开发环境,不会的话后面有教。

@2.怎样安装Eclipse?

方法:首先要安装JDK,在Oracle官网www.oracle.com/technetwork/java/javase/downloads/ 下载安装。然后安装Eclipse,在其官网www.eclipse.org/downloads/ 下载。只要JDK安装正常,Eclipse解压后即可直接使用,Eclipse拥有针对不同需求的多个版本,我们下载标准版本或者移动开发版本即可。这步如果有问题,多上网搜索,不要怕麻烦,出错也没关系,心态要摆正。

3.怎样安装Android?

其实这个问法是有问题的,安装Android更应该理解为在手机或其他移动设备上安装Android操作系统;我们这里讲的是怎样安装Android开发环境/开发组件。因为一般情况小白在需要安装Android开发环境/开发组件的时候,都会省略成这样的问法,所以使用了它作为标题,顺便与第二小节的标题对应。

然后需要一个叫做SDK的东西(Software Development Kit,软件开发工具包)。任何一门开发语言/平台,要方便开发者进行开发工作,必须给他们工具,这些工具放在一个工具箱里,这就是SDK。我们要进行Android开发,当然就下载Android SDK,官方网址为:https://developer.android.com/sdk/index.html 。有了ADT后打开Eclipse界面会看到多出两个Android相关按钮,如下图所示。一个是绿色机器人肚子中间有个向下的箭头的图标(Android SDK Manager),我们就是通过点击它进行下载更新SDK;一个是绿色手机屏幕中有个小机器人头像(Android Virtual Device Manager),我们通过点击它进行模拟器的创建和管理。

图1 ADT安装成功示意图

上网一搜,几乎所有帖子都是先说需要SDK,然后安装ADT。但是,从实际操作的角度,个人觉得先ADT后SDK更符合实际安装顺序,希望能纠正网上对于广大初次安装者的谬误引导。

宝典方法:目前(从2013年起)Android官网直接提供了打包好的Eclipse(图标为{小机器人}的那个东西),直接下载解压所有东西都有了,很方便使用,下载地址为http://developer.android.com/sdk/index.html

我们在通过ADT安装/更新SDK时,往往会出现难以下载等问题。鉴于此,特别拉出一个小节用来帮助大家解决这个问题,请见下面“如何更新SDK”。

4.如何更新SDK?

普通方法一:打开SDK Manager,选择更新。缺点是国内网络问题,往往无法完成下载或者下载十分缓慢。

宝典方法:找已有更新的同事,进入SDK根目录下的platforms文件夹,可看到以android-NUMBER命名的若干文件夹,如下图所示。每一个NUMBER即一个Android API标号,如android-17,即API为17的SDK。选择你所需的API文件夹,比如4.0.3的API为15,4.2.2的是17。拷贝至自己电脑的SDK下的相同目录下面,重启Eclipse即可。

图x SDK API文件夹示意图

5.必须要同步最新的SDK吗?

分两种情况:

一、我们主要是做手机操作系统,里面的上层应用维护,所以,并不需要。即,我们开发Android4.4的项目,所使用的SDK API最大支持4.0也没关系。只要可以阅读代码并做修改即可。

二、除非是要独立开发Android4.4的APK。

6.入门水平的必须技能?

至此,做个简单小结:你已经算是Android开发入门水平了。

这时你拥有以下技能:

一、工具OK(可以在安装指南的帮助下独立完成开发环境的搭建)。拥有完好的可开发的Eclipse,能完好的新建开发Android工程,并可以正常运行。

二、基础技能OK。拥有Java和Android开发知识,能读懂代码,可以进行基本开发。

7.入门后如何进阶?

一旦入门后,很多人会进入下一个迷茫期:接下来我们该怎么做?学生朋友们会感到无聊和无从精进,工作朋友们则一方面想要赶紧进入实际项目开始有所产出,一方面又对能否担当实际开发任务而忐忑午安。

如果是工作中的开发人员(手机系统开发维护),则尽快开始Android系统(源码目录结构、源码内容等)的学习;如果是学生等其他朋友,则继续进行Android开发技术进阶学习,方法是读完讲义,练习更多的代码,直至开发出个人的应用上架到各Android应用市场(这方面不详细讲了,网上论坛很多可以多学习了解)。下面的内容,主要面向工作中手机系统开发维护的开发人员,立志以后进入移动开发领域的同学朋友或是做APK应用开发的朋友请酌自身需要进行阅读。

入门后,即可开始学习、预研实际项目的代码,掌握各种项目中所需要用到的工具。这个阶段最重要的是多问、多操作,因为很多知识不一定有现成的文档教你,比如日常工作中大部分开发工程师如何做比较能节省时间等等。后面的内容,即是这些操作的根本点,只要一个个去练习熟悉,在过程中自然可以体会和掌握很多技能和技巧。Let’s begin.

8.如何下载代码?

第一步,下载项目代码(本文所使用的环境为Unbuntu 10.0.4LTS)。

说明:出于安全的考虑,一般公司均对代码的下载权限进行了控制。要想从服务器上下载必须先申请开通下载代码的权限。至于如何申请开通,由于和本节内容关系不大,请见后面介绍Git/Gerrit的小节。

方法:

询问集成工程师或其他资深同事,让他告诉你下载代码的命令。

打开终端,敲入命令进入所要存储的地方/路径(这里使用/local目录),

$cd /local

新建源码目录,

$mkdir eyelike-v1.0-dint

然后进入源码目录,

$cd eyelike-v1.0-dint

在源码目录输入下载命令,

$repo init –u git@10.92.32.10:alps/manifest.git -m eyelike-v1.0-dint.xml && repo sync

遇到确认用户名和密码的时候直接按enter键,遇到确认下载的时候按y即可。这样等待半小时左右下载即成功。

9.如何在Eclipse中导入整个工程?

我们阅读代码,一般都是在Eclipse中进行。代码已经下载下来了,马上便会遇到如何在Eclipse中导入整个工程的问题。

方法:

1.找到所下载完毕的源代码根目录,例如之前下载的yarism-v1.0-dint,进入以下路径:

工程名(这里即是eyelike-v.10-dint)/development/ide/eclipse

2.显示隐藏文件(可按快捷键Ctrl+H),会找到一个叫做.classpath的隐藏文件,复制,粘贴至源代码根目录,这里即yarism-v1.0-dint文件夹下面。

3.然后,打开Eclipse,新建一个Java工程,这里特别注意是Java工程,而不是Android工程。

4.将默认路径(Use default location)前的小勾取消,选择源代码的路径,这里即yarism-v1.0-dint文件夹的全路径,点击OK,即可完成源代码导入。

特别注意:由于代码量很大,所以一般需要等待若干分钟才能全部导入完毕。这时,在工程名旁边出现一个红色小感叹号是正常现象,不影响代码阅读、跳转等,所有人都是这样的,千万不用担心。

10.从代码哪个部分/模块入手?

源码中有非常多的文件夹目录和类文件,导入工程后肯定会茫然失措。到底怎样入手阅读呢?最好的方法当然是先从一个小部分阅读熟悉,然后再慢慢拓展。而“一个小部分”,我们常常以“模块”作为单位。这时,必须讲解一下模块的划分。

首先从手机功能的角度来引入。我们的手机可以实现打电话、发短信、发Email、使用蓝牙进行文件传输、照相摄像、听音乐看视频等等众多功能。而之所以我们能使用这些功能,皆是因为系统代码中有这些功能的实现。

然后从源码角度来解释。在源码中,即将这些代码按照功能进行了封装,分别存储在不同的文件目录下面。一方面方便开发、一方面方便后续阅读维护。作为上层应用开发维护,主要涉及到的代码目录为:eyelike-v1.0-dint/packages/apps。当你进入这个目录,就会发现其中包含了很多文件夹,名字诸如:Calendar、Settings、Camera等等。而粗略地来讲,每一个文件夹便是一个模块。

接下来从部门组织架构的角度来补充。一个软件开发部门是按不同的功能模块来进行分组的,小组一般包括:集成组(开发环境搭建维护、代码发布管理、定制化框架开发等职能)、系统组(系统分配维护、驱动开发、升级、系统测试工具的开发维护等职能)、应用开发组(各上层应用、系统应用、第三方应用的开发维护等职能)。这时,大家应该可以理解这篇文章主要是讲给做应用开发组的同学的(系统开发中的上层应用开发维护)。因此再详细介绍下其中又包括哪些Team:APP_PIM(负责浏览器、Email、联系人等模块)、APP_Connectivity(负责蓝牙、GPS、WIFI、NFC等连接相关模块)、APP_Multimedia(负责音视频播放器、相机等模块)、APP_LocalService(负责Launcher、设置、锁屏、第三方APK等模块)。每个Team负责对所划分的不同模块进行开发维护。

综合上面三个角度,我们首先要确定自己的开发方向:哪个组哪个模块。因此必须找到自己期望的模块,进入该Team进行学习工作。这一步多去思考自己的优势劣势,自己的兴趣,并多与导师/TeamLeader进行沟通了解。最终,做出自己的选择。

11.如何入手一个模块?

当确定好将要进入的模块后,便要开始对该模块的学习,最好通过代码的学习和PR的演练两个步骤来慢慢深入。通常一个模块是有一些已有的总结文档可以拿来查看学习的,发挥主观能动性多去问同模块的同事、以及上网查询都十分必要。

好的代码学习方法是先理解/了解这个模块在手机里的使用和表现。下面以蓝牙为例进行说明。比如说进入蓝牙模块有三个入口,一个是设置里的蓝牙设置选项,一个是通知栏下拉列表快捷设置中的蓝牙开关,再者是进行文件分享时弹出的通过蓝牙传送的选择界面。其次是它的具体功能,传送文件、开关的操作、搜索周边的蓝牙设备、可见不可见的设置、重命名蓝牙设备、查看上传下载历史等等。这方面只要拿一台手机多去使用熟悉即能掌握,而且一般情况下我们日常使用手机或许已多多少少有过了解接触,需要做的重点工作是:系统化地了解它的工作机制,比以前更加全面没有遗漏。

然后,在代码中找到外在功能对应的包、类。做到这一点对于一个对模块一无所知的人来说相对是比较困难的。慢慢来,多花些时间和精力。最先的方法首当问同模块的资深同事,请他指明主要的包、类,可能只需要5分钟时间给你点一下,就能少花你几天的时间!多感谢同事吧!然后,一般的学习总结、技术文档都会包含代码结构,找到它,研究理解熟悉之。

到这里,就不得不介绍连接真机进行调试的方法了。

12.如何利用Eclipse Debug手机代码?

方法:

1.选中DDMS,连上手机,选中要调试的进程;

2.选中Run→Debug Configurations;

3.在Remote Java Application下面选中要调试的项目;

4.在右边的选项port键入:8700;

5.然后在想要调试理解的代码处设置断点,点击调试即可。

解释说明一下:这样,当点击手机进行操作的时候,代码运行到断点的地方后,手机便无法继续运行了,此时可以按F5/F6进行单步调试,在代码中可以查看各变量等代码信息。用此方法,可以巧妙地进行代码理解阅读:比如在将要进入蓝牙设置的类的最开始地方设置一个断点,然后进行调试,这样就可以一步一步跟到各操作对应的代码是如何进行跳转了。

时间: 2024-10-11 09:13:36

Android开发者上手宝典(一)的相关文章

Android开发者上手宝典(三)

19.怎么使用SourceInsight? 19.1用途 我们主要使用SourceInsight进行源码分析和查找,主要是查找我们所需要的文件/类的位置.对于一套源码,拥有几十万甚至更多个文件,我们可以将这套源码导入到SourceInsight的工程里,然后通过它的搜索功能,便能快速给出我们搜索结果:是否有这个文件,同时可以直接打开进行代码阅读和修改同步等操作.什么时候需要这么做呢?举一个例子帮助理解: 当我们需要解决一个PR或验证一个问题时,难免会涉及到一些并不熟悉的文件(布局.资源等xml文

Android开发者上手宝典(二)

13.如何全编译代码? 由于上面介绍了如何连接真机进行调试,因此必须赶紧补充上全编译的方法.因为要进行联机调试,之前首先得将对应的代码进行全编译.很多新人在进行联机调试的时候会有很大的疑惑:为什么手机运行时Eclipse就知道,它就能让代码一起跑动运行?解答这些问题必须先了解全编译. 全编译就是告诉整个开发环境这各工程里有些什么代码,有些什么资源,将我们的Java代码转为机器/环境所理解的格式,并事先告诉它.这样,Eclipse在连接真机的时候就知道手机里到底是怎么回事了.当然,手机所使用的系统

给 Android 开发者的 RxJava 详解

作者:扔物线 前言 我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个月,我也发现国内越来越多的人开始提及 RxJava .有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava 到底是什么? 鉴于 RxJava 目前这种既火爆又神秘的现状,而我又在一年的使用

Android SDK上手指南 3:用户交互

在这篇教程中,我们将对之前所添加的Button元素进行设置以实现对用户点击的检测与响应.为了达成这一目标,我们需要在应用程序的主Activity类中略微涉及Java编程内容.如果大家在Java开发方面的经验不太丰富也没必要担心,只要按步骤进行即可完成学习.我们将在本系列的下一篇文章中深入探讨Java语法,从而保证大家了解初步Android开发任务中所必需的编程语言知识. 大家可以在Android当中以多种不同方式实现用户交互.我们将学习两种最为典型的处理方案,从而实现应用按钮对用户点击的感应--

Android SDK上手指南 2:用户界面设计

http://mobile.51cto.com/ahot-419184.htm 内容简介 我们将为应用程序项目添加布局方案,在这方面XML与Eclipse ADT接口将成为工作中的得力助手--不过在后面两节中还会用到一部分Java开发知识.XML与Java在Android平台的开发工作当中可谓无处不在,如果大家对二者还缺乏基本的了解,请尽快想办法补补课.对于刚刚入门的读者朋友来说,本文所介绍的要点将成为各位日后开发工作的重要基础. 1. XML基础知识 在我们开始讨论布局之前,先来梳理作为标记语

转:给 Android 开发者的 RxJava 详解

转自:  http://gank.io/post/560e15be2dca930e00da1083 评注:多图解析,但是我还是未看懂. 前言 我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个月,我也发现国内越来越多的人开始提及 RxJava .有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度

一名Android开发者的微信小程序填坑之路(1)

前言 首先要声明的是,我是一名 Android 开发者,之前基本没有前端开发经验,甚至连 JS ,HTML 都是为了开发小程序现学的一些皮毛--所以文章中所提到的一些点也许在资深前端开发者看来只是小case,但是站在一个 Android 开发者的角度来看确实是大坑. 前面就不说太多东西了,文章的末尾再谈谈我对小程序的一些看法--这篇文章主要是谈谈在开发小程序的过程中遇到的一些坑. PS:推荐一下我写的一个微信小程序版的Gank客户端:wechat-weapp-gank 正文 1,获取小程序开发工

一名Android开发者的微信小程序填坑之路(2)

前言 上一篇是九月二十七日写的,而这一篇我动笔的时间是十月十日(特殊的日子),中间相隔十三天--当然是因为国庆节.说老实话,这十三天里面我都没有碰和小程序有关的东西--毕竟学习小程序的开发也只是起于兴趣,而平时的工作并不会涉及与其相关的东西--但是在这十三天里,我能明显的感受到小程序热正在逐渐的消退,或者说大家正在逐渐以一种较为平和的姿态接受它的存在,其实这是一件好事.期待公测的到来. 接下来我就直接进入正题了,另外,文末我想和大家分享一下我的国庆节. PS:这篇文章是接着上一篇文章 一名And

为Android开发者定制的搜索引擎

我在谷歌上定制了一个专门针对Android开发者的搜索引擎,加载慢的童鞋考虑FanQiang吧,作为技术人员使用Google才是王道. 在此推荐给大家:Android搜索引擎 搜索内容:Android方面的问答.技术文章.API.开源项目等. 搜索范围:StackOverflow.Github.Google Code.Eoe.开源中国.CSDN.博客园.Android巴士.搜集的各种Android开源小站等. 效果图: