最新Android新手入门FAQ鲁德培训.docx
- 文档编号:26192742
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:13
- 大小:25.39KB
最新Android新手入门FAQ鲁德培训.docx
《最新Android新手入门FAQ鲁德培训.docx》由会员分享,可在线阅读,更多相关《最新Android新手入门FAQ鲁德培训.docx(13页珍藏版)》请在冰豆网上搜索。
最新Android新手入门FAQ鲁德培训
最新Android新手入门FAQ
Android基本概念介绍,Android就业前景,学习android需要哪些基础。
我们一目了然。
鲁德。
1、Q:
什么是Android?
A:
Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
简单来说是个开源的手机操纵系统。
2、Q:
Android就业前景
A:
Android是Google开发的基于Linux平台的开源移动操作系统。
它包括操作系统、用户界面和应用程序----移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开发和完整的移动软件。
国外Android市场正在如日中天的扩展,据市场调研机构最近发布的一份报告称,今年第一季度基于Android操作系统的智能手机在美国智能手机总销量中所占比例达到28%,首度超过苹果iphone,苹果iphone约为21%,相信在不久的将来会有更多的用户选择Android系统的手机或是无线终端设备。
3、Q:
Android的特点都有哪些?
A:
1)应用程序框架:
支持组件的复用和更换
2)Dalvik虚拟机:
专门为移动设备进行过优化
3)集成的浏览器:
基于开源的WebKit引擎,TV上会内置Chrome浏览器
4)优化的图形机制:
自定义的2D图形库,基于OpenGLES1.0规范的3D图形实现(本项为硬件加速器可选)
5)SQLite:
轻量级的数据库,支持结构化数据的存储
6)媒体支持:
面向常见的音频、视频以及静态图形档案格式(MPEG4,H.264,MP3,AAC,AMR,JPG,PNG,GIF)
7)GSM技术GSM:
globalsystemformobilecommunications(依赖硬件支持)
8)Bluetooth,EDGE,3G,andWiFi(依赖硬件支持)
9)Camera,GPS,compass,andaccelerometer(依赖硬件支持)
10)Richdevelopmentenvironment:
丰富的开发环境,包含一套硬件仿真器,一些用于程序调试、内存和性能剖析的工具,以及支持Eclipse集成开发环境的插件(ADT)。
4、Q:
学习android需要哪些基础?
A:
学习Android一定要有Java基础,最差也要类似Java的其他面对像对象语言的基础。
很多朋友从来没有搞过编程,听说Android能赚钱,就疯了一样冲过来要学习。
这明显是不靠谱的,甚至有的朋友一个字母一个字母的按照我的例子去敲代码,然后非常努力的把代码背下来。
像背英文单词一样的背代码,编程学成这个样子,还真是让小生佩服啊!
不管怎样,你最少也要掌握Java语言的如下知识点才能够开始学Android:
a)Java基本数据类型及其特点
b)Java分支语句和循环语句的使用
c)类和对象的创建和使用方法
d)函数的使用
e)抽象类和接口
f)继承和实现
g)对象的多态性
h)包和访问权限
i)异常的处理
j)类集框架
k)eclipse的基本用法
5、Q:
Android上编程用什么语言?
A:
Android应用基于Java,支持SQL,由于底层是Linux所以底层支持C/C++。
目前有两种编程:
1)基于ADT的JAVA编程
2)基于NDK的C编程
6、Q:
Android编程环境需要哪些?
A:
编程环境:
Ide、AndroidSDK、JDK、Java
官方推荐用JDK+ECLIPSE+ADT+ADK(WINDOWS开发环境下。
7、Q:
什么是APK?
A:
APK是AndroidPackage的缩写,即Android安装包(anapk)。
APK是类似SymbianSis或Sisx的文件格式。
通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。
apk文件和sis一样最终把androidsdk编译的工程打包成一个安装程序文件格式为apk。
APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是DalvikVMexecutes的全称,即AndroidDalvik执行程序,并非JavaME的字节码而是Dalvik字节码。
8、Q:
什么是SDK?
A:
SDK,SoftwareDevelopmentKit的缩写,中文即“软件开发工具包”。
广义上指辅助开发某一类软件的相关文档、范例和工具的集合。
SDK是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等创建应用软件的开发工具的集合,一般而言SDK即开发Windows平台下的应用程序所使用的SDK。
它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,但也可能包括能与某种嵌入式系统通讯的复杂的硬件。
一般的工具包括用于调试和其他用途的实用工具。
SDK还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。
9、Q:
什么是ADT?
A:
ADT(AndroidDevelopmentTools):
目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具,它可以连接sdk和Eclipse,帮助Eclipse找到sdk
10、Q:
什么是API?
A:
API(ApplicationProgrammingInterface)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的API而使操作系统去执行应用程序的命令(动作)。
其实早在DOS时代就有API的概念,只不过那个时候的API是以中断调用的形式(INT21h)提供的,在DOS下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比如将AH置为30h后调用INT21h就可以得到DOS操作系统的版本号。
而在Windows中,系统API是以函数调用的方式提供的。
同样是取得操作系统的版本号,在Windows中你所要做的就是调用GetVersionEx()函数。
11、Q:
什么是TCP协议和UDP协议?
A:
TCP/IP协议的名称中只有TCP这个协议名,但是在TCP/IP的传输层同时存在TCP和UDP两个协议。
TranferControlProtocol的简称,是一种面向连接的保证可靠传输的协议。
通过TCP协议传输,得到的是一个顺序的无差错的数据流。
发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是serversocket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
UDP协议是UserDatagramProtocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。
12、Q:
什么是IPC?
A:
IPC(Inter-ProcessCommunication):
进程间通信
Android中级进阶FAQ
1、Q:
Android开发者应该先看什么文档?
A:
对开发者来说,最重要的是概念,而DOCS中的DevGuide里面对其解释十分清晰,请仔细阅读。
并可以到eoeAndroid开发者社区中找到很多的文档和学习资料。
2、Q:
Android系统架构有哪些?
A:
Android的系统架构和其操作系统一样,采用了分层的架构。
从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。
3、Q:
什么是开源?
A:
开源,意为开放源代码,由BrucePerens(曾是Debian的创始人之一)定义如下:
1)自由再散布(FreeDistribution):
获得源代码的人可自由再将此源代码散布。
2)源代码(SourceCode):
程式的可执行档在散布时,必需随附完整源代码或是可让人方便的事后取得源代码。
3)衍生著作(DerivedWorks):
让人可依此源代码修改后,在依照同一授权条款的情形下再散布。
4)原创作者程式源代码的完整性(IntegrityofTheAuthor’sSourceCode):
意即修改后的版本,需以不同的版本号码以与原始的程式码做分别,保障原始的程式码完整性。
5)不得对任何人或团体有差别待遇(NoDiscriminationAgainstPersonsorGroups):
开放源代码软件不得因性别、团体、国家、族群等设定限制,但若是因为法律规定的情形则为例外(如:
美国政府限制高加密软件的出口)。
6)对程式在任何领域内的利用不得有差别待遇(NoDiscriminationAgainstFieldsofEndeavor):
意即不得限制商业使用。
7)散布授权条款(DistributionofLicense):
若软件再散布,必需以同一条款散布之。
8)授权条款不得专属于特定产品(LicenseMustNotBeSpecifictoaProduct):
若多个程式组合成一套软件,则当某一开放源代码的程式单独散布时,也必需要符合开放源代码的条件。
9)授权条款不得限制其他软件(LicenseMustNotRestrictOtherSoftware):
当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光碟片),不得限制其他软件的授权条件也要遵照开放源代码的授权。
10)授权条款必须技术中立(LicenseMustBeTechnology-Neutral):
意即授权条款不得限制为电子格式才有效,若是纸本的授权条款也应视为有效。
4、Q:
如何搭建编程环境?
A:
开发平台推荐Eclipse。
VS基本不要想,除非你特别钟爱于传统的vim或其他编程环境并且打算让自己每天敲一堆命令,否则还是用Eclipse吧。
它是官方推荐的,目前支持的还算中规中距。
而且Linux,windows都能用。
这里拿eoe的技术大牛pcr所使用的开发环境举例,SDK_2.3+Eclipse_3.6.1+ADT8.0.1。
这应该就是目前最普通的开发环境组合了。
至于其他的辅助工具,可以在对android有一定了解之后在考虑添加。
5、Q:
什么是NDK?
A:
1)NDK是一系列工具的集合。
NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。
这些工具对开发者的帮助是巨大的。
NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。
2)NDK提供了一份稳定、功能有限的API头文件声明。
Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。
从该版本的NDK中看出,这些API支持的功能非常有限,包含有:
C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)
6、Q:
怎样提高Android应用程序的速度?
A:
首先,我们要先明白“加快”是有两层意思的,第一层是代码执行所需要的时间,第二层意思是用户需要等待用户界面响应的时间。
下面是提高Android应用程序运行速度的几条原则。
1)不要让UI线程等待
2)耗时操作不可取
3)模拟器和真实的设备有不同
4)通知用户,要注意用户体验。
7、Q:
Android运行库有哪些?
A:
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。
Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。
同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的"dx"工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
8、Q:
Android都支持哪些Java特性
A:
针对于JavaSE或JavaEE的程序员想转到Android平台上进行开发,有以下几点常规的支持:
1)目前来看JDK的高级特性均支持,比如说1.Java的反射、2.NIO(NewI/O)、3.JNI(JavaNativeInterface)相对而言对于OpenGL和SQLite的支持比较强大,但是AWT和JDBC这些东西都不支持。
2)在Xml解析上,兼容DOM、XmlPull和SAX,同时数据交换格式上,Android虽然不支持LINQ但对于Java来说JSON同样支持。
3)对于Http处理方面,提供了轻量级的Http处理类,以及更完善的Apache库支持。
4)音频方面Android比较强大,使用了OpenCore库,很多地方我们可以自己编写编码、解码器进行扩展。
5)Android在文件系统上基本山和Java是相同的,不过对于高效率的内存影射文件而言提供了android.os.MemoryFile这个类。
总体而言,Java程序员转入Android开发只需要了解平台特有的,Intent,Service,Receiver和Activity就差不多了,深入了解下AIDL和UI控件和自定义Widget基本上可以胜任常规的工作。
9、Q:
Android最简单播放GIF动画方法是什么?
A:
GIF动画的原理就是逐帧播放,在Android中提供了AnimationDrawable类可以实现,GIF89A的解码方法在过去的J2ME平台移植到Android平台也能用,其实在GoogleAndroid上面开发目前2.2以后的固件支持的方法除了FlashPlayer外,更好的兼容方法就是使用万能的webkit浏览器了。
直接在工程中内嵌一个webView,当然了路径大家可以换成本地的,对于浏览器使用本地资源url为file:
//开头。
不过webView的资源消耗也不小,开个webView对象可能占用了至少8MB的RAM吧,保守估计,当然更多的要看插件和以及html的复杂程度所决定的。
10、Q:
线程在Android应用当中的作用?
A:
1)动态更新UI如AsyncTask类,在开发Android应用时必须遵守单线程模型的原则:
AndroidUI操作并不是线程安全的并且这些操作必须在UI线程中执行
2)SOCKET之间的通信
3)文件的下载
4)与服务端之间的交互
5)复杂数据和逻辑的处理
Android高手过招FAQ
1、Q:
如何成为高手?
A:
成为一名真正的Android高手必须掌握和遵循的一些准则:
1)学会懒惰
aDon'tReinventtheWheel(不要重复发明轮子)。
bInventingtheWheel(发明轮子)。
cDon'tReinventtheWheel(不要重复发明轮子)。
“轮子理论”,也即“不要重复发明轮子”,这是西方国家的一句谚语,原话是:
Don'tReinventtheWheel。
“不要重复发明轮子”意思是企业中任何一项工作实际上都有人做过,我们所需要做的就是找到做过这件事情的人。
拿到软件领域中就是指有的项目或功能,别人已经做过,我们需要用的时候,直接拿来用即可,而不要重新制造。
2)精通Android体系架构、MVC、常见的设计模式、控制反转(IoC)
3)编写可重用、可扩展、可维护、灵活性高的代码
4)高效的编写高效的代码
5)学会至少一门服务器端开发技术
2、Q:
JNI是什么?
A:
JNI是JavaNativeInterface的缩写,中文为JAVA本地调用。
从Java1.1开始,JavaNativeInterface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。
JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
使用java与本地已编译的代码交互,通常会丧失平台可移植性。
但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。
JNI标准至少保证本地代码能工作在任何Java虚拟机实现下。
3、Q:
Android和Linux的区别?
A:
Android是一个专门针对移动设备的软件集,包括一个操作系统,中间件和一些重要的应用程序。
AndroidSDK提供了在Android平台使用java语言进行android应用程序开发必须的工具和API接口。
Android系统架构除了Linux2.6内核之外,还提供了丰富的lib和适用于java的运行时环境(很重要的一点是Dalvik虚拟机,类似于JVM)、应用程序框架和核心应用。
在此基础之上可以快速开发应用程序。
linux内核像是核心技术支持,而google将其商业化于移动设备上。
android上开发应用程序和WindowsMFC开发有些类似。
4、Q:
SDK升级了,如何更新SDK?
A:
更新SDK是非常棘手的。
当一个新的SDK发布,必须是plugin也发布。
更新容易出现的错误是两个版本都存在,而且都不正常。
最终不得不卸载了它们并且重新安装最新的一个。
然后那个最新的SDK工作正常了。
建议任何面对SDK或者plugin升级的人都采用相同的过程。
简单的卸载老版本,然后安装新版本。
不要升级。
5、Q:
如何进入Recovery模式
A:
每部Android设备进入Recovery模式的方法不同。
以Milestone为例:
若bootloader为90.78,按住键盘的“X”键,再按电源键开机,看到moto的经典logo即可放开此2键。
等待出现一个三角形图标,然后按住音量向上键+轻按拍照键,会出现四个选项。
放开按键,可以用方向键选择一个选项。
作用分别为重启,应用update.zip,清除所有数据至出厂状态、清除cache。
6、Q:
Androidbionic移植需要注意的事项
A:
下面通过一个例子来说明移植binic需要做的事情(BIONIC使用的内核头文件从2.6.29升级到2.6.31):
1)修改之前,先要备份android/bionic
2)按照下面方法复制linuxkernelv2.6.31头文件:
复制include/asm-generic到bionic/libc/kernel/originalfolder
复制include/linux到bionic/libc/kernel/originalfolder
复制include/mtd到bionic/libc/kernel/originalfolder
3)运行tools/update_all.py脚本,生成新的头文件,方法如下.
$cdandroid/bionic/libc/kernel
$tools/update_all.py
以上的操作将复制新的头文件到bionic/libc/kernel/common目录
4)删除bionic/libc/kernel/original目录
5)复制平台相关的头文件:
复制linuxv2.6.31平台相关的asm目录到指定的路径,方法如下:
复制arch/arm/include/asm到android/bionic/libc/kernel/arch-arm/
复制arch/x86/include/asm到android/bionic/libc/kernel/arch-x86/
6)从v2.6.29bionic/libc/kernel/common/linux复制一下的头文件到新的android/bionic/libc/kernel/common/linux目录:
android-alarm.h
android-pmem.h
android_power.h
ashmem.h
binder.h
msm_adsp.h
msm_audio.h
msm_mdp.h
keychord.h
7)编译
$cdandroid
$make-j4
7、Q:
Android源码下vendor目录下文件的作用?
A:
指的是某些公司的产品型号,主要是一些针对硬件配置的东西,比如radio方面的,若是采用TI的,这里面会有TI提供的一些RIL方面的接口等。
8、Q:
编译Android源码和编译Android内核有什么区别?
A:
其实没什么区别,就多了几个android特有的驱动,最重要的是binder
9、Q:
如何获取手机和存储卡上的图片?
A:
[java]viewplaincopy
protectedStringgetAbsoluteImagePath(Uriuri)
{
//canpostimage
String[]proj={MediaStore.Images.Media.DATA};
Cursorcursor=managedQuery(uri,
proj,//Whichcolumnstoreturn
null,//WHEREclause;whichrowstoreturn(allrows)
null,//WHEREclauseselectionarguments(none)
null);//Order-byclause(ascendingbyname)
intcolumn_index=cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
returncursor.getStrin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 Android 新手入门 FAQ 培训