转载请注明http://www.cnblogs.com/devtrees/p/4382234.html
欢迎指正错误,共同进步!
一背景知识
1.1G-4G的介绍
Generation(一代)
WAP(wait and pay)
Wireless Markup Language(WML)精简版的html语言
二.Android概述
1.Android操作系统介绍
2.Android历史介绍
3.Android系统架构(重点)
第一层:应用层Application
第二层:应用框架层Application Framework(中间件)
第三层:Android底层类库层 Libraries、Dalvik虚拟机
第四层:linux内核层 linux kernel(安全管理、内存管理、进程管理、电源管理、硬件驱动)
Android试运行在Linux内核基础之上的。
4.手机设备的软件栈,包括
一个完整的操作系统
中间件
关键的应用程序
5.两种虚拟机的不同 (重点)
1)、架构不同:JVM使用栈架构;Dalvik使用的是寄存器,数据是加载到CUP的寄存器上的。
2)、JVM加载的.class文件,Dalvik加载的是.dex文件,对内存的分配情况做了优化。
三.Android开发环境搭建和开发工具使用介绍
(一).SDKManger的使用
1.可以在里面管理SDK版本的下载和卸载。(SDK下载到platform文件夹中)
2.ADT(Android Developer Tools)是eclipse的一个插件
3.
1)下载的包中有:
Eclipse+ADT plugin --- ADT的插件;
Android SDK Tools --- 安卓的SDK工具
Android Platform-Tools --- 安卓最新的平台工具
The latest Android platform --- 安卓最新的平台
The latest Android System image for The emulator --- 最新的模拟器的视图对象
2)解压后,里面有三个文件和一个执行程序。
Eclipse 文件夹是开发时用到的工具。
sdk 文件夹是开发时用到的工具集。
SDK Manager.exe SDK的管理器
4.
注意:SDK Manage中Tools选项有options选项,打开,将others选项卡中的第一个选项勾上,勾上后,资源会采用http的形式下载下来,下载不会被墙,不会中断。
5.Android 版本与API等级对应关系及SDKManager介绍
1)Android 版本与API等级对应关系
Platform API Level
Android2.2 8
Android2.3.3 10
Android4.0 14
Android4.1.2 16
注:推荐在android2.2、2.3、4.1平台上开发,稳定。
2)SDKManager介绍
【开发中需要开发哪个平台的产品,就要将对应的平台文件下载下来。下载完之后,该文件夹会在SDK文件夹下的platform文件夹中。】
每个安卓版本下具体文件的介绍:
SDK Platform -- 开发所需要的平台(重要),开发时所使用的jar包
Samples for SDK -- SDK的示例代码【示例代码下载之后放在SDK文件夹中的samples 文件夹中,里面是根据Android版本号分文件夹的。】
ARM EABI v7a System Image -- 用于创建基于ARM处理器的模拟器的镜像
Intel x86 Atom System Image -- 用于创建基于x86处理器的模拟器的镜像
MIPS System Image -- 开源的处理器架构(用的不多)镜像
Google APIs -- 开发中要用到地图,就需要下载这个架包,下载之后可以操作Google 地图了。
Sources for Android SDK -- SDK的全部的源代码,方便调试,观察系统是怎么实现 【会放在SDK文件夹中的sources文件夹中的Android版本的文件夹中】
Extras -- 额外的工具
Android Support Library -- 支持的库(可以使低版本支持高版本),API的向下兼容, 开发项目时会用到
Google AdMob Ads SDK -- 用于在已完成的程序中加入广告
Google Analytics App Tracking SDK -- 用于分析程序的,发布到网上之后,可以通过 这个区跟踪。
Google Cloud Messaging for Android Library -- 用于消息推送
Google Play services -- 程序写完后想要发到Google上,要用到的架包
Google Play APK Exception Library --
Google Play Billing Library --
Google Play Licensing Library --
Google USB Driver -- 是手机的驱动。
Google Web Driver -- 是web摄像头用到的驱动
Intel x86 Bmulator Accelerator(HAXM)-- Intel公司提供的一个加速器的工具
【使用:找到"模拟器的 加速器"文件夹,打开里面的执行文件即可,本机 的处理器要I3以上】
(二).模拟器的简介及创建
1.模拟器尺寸创建背景
VGA 480* 640
QVGA 240*320
HVGA 320*480
WQVGA 240*400
FWVGA 480*854
WVGA 480*800
注:模拟器越大,计算越复杂,消耗的资源越多。
2.AVD的创建(AVD: Android virtual Device 安卓虚拟设备)
1)两个选项卡,一个是AVD,下面显示,AVD创建设备产生文件的存放目录
另一个是Device Definitions(已定义好的设备)
2)创建模拟器界面的每项的意思:
AVD name:模拟器名称;
Device:屏幕分辨率;
Target:平台版本号;
CPU/ABI:CUP(处理器)的类型
KeyBoard:创建的时候是否显示键盘;
Skin:在创建的时候,是否显示键盘上面的皮肤
Front Camera:
Back Canera:控制模拟器的摄像头,Webcam0-->自动加载电脑的摄像头
Memory Options:RAM-->模拟器的内存大小
Internal Storage:模拟器的硬盘有多大;
SD Card:外部设备的大小(不要贪多,是在硬盘上创建同样大小的文件作为sd卡)
Emulation Options:Snapshot-->相当于windows-7的睡眠状态,即关机之后,下次开机的时候,这些操作还在,不建议勾选容易造成问题
Use Host GPU-->如果电脑是独立显卡,可以使画面流畅,如果是集成显卡的,容易造成画面变花
注意:1.模拟器与电脑的链接其实用的是adb.exe调试桥(协议通信)
2.模拟器左上角的数字,其实是模拟器的端口号,也是模拟器的电话号(模拟器不支持中文)
3.小技巧:ctrl + F11 横竖屏的切换
3.创建模拟器常见错误:
1)、invalid command-line parameter:
错误的非法的路径,代表安装的路径有中文。添加"Android_SDK_HOME"环境变量,指向Android的SDK目录。然后重启AVD-->模拟器
2)、模拟器启动后,无法保存数据
原因:电脑意外关机或者模拟器非法关闭。
正常情况下模拟器被开启后,会在"Documents and SettingsAdministrator.androidavd**.avd"的目录下产生:cashe.img.lock 、hardware-qemu.ini.lock、sdcard.img.lock、userdata-qemu.img.lock这样的文件夹,用来标记当前模拟器设备已经开启。当模拟 器关闭时,会自动删除这些文件夹。
【注:如果电脑意外重启或模拟器无法关闭,这几个文件是不会被自动删除的,系统Android模拟器还处于打开状态,新开启的模拟器就无法保 存数据了。这个时候需要手动删除这些文件夹】这些文件时用来标示这些径向文件被那个模拟器使用了
文件夹cashe.img.lock中的pid文件这个文件打开之后,里面保存的是进程里面的某个pid值,即为进程id。当开启两个相同的模拟器时,会造成 某些安装的软件没有保存。
3)、"尚未注册网络"错误信息的解决方案
a:电脑没有连接互联网,同时也没有局域网;网上邻居-->属性-->本地连接-->属性:设置TCP/IP:
IP地址:192.168.1.100
子网掩码:255.255.255.0;
默认网关:192.168.1.100
首选DNS服务器:192.168.1.100
b:没有连接互联网,但是有局域网;
IP地址:设置成你所在的局域网的IP;
子网掩码:设置成你所在局域网的掩码;
默认网关:设置成你所在局域网的网关;
首选DNS服务器:设置成你所在的局域网的路由器IP
(三).DDMS介绍
1.释义:DDMS:Device Definition Motion Service
2.DDMS位置
如果eclipse右上角默认没有这个条目,那么在这个位置附近有个类似田字格似的小方块,点击,选other,会出现一个列表,内有DDMS,选中,按OK,即可。
3.DDMS界面
1)上图1处为Devices界面,显示当前eclipse所连接的设备
2)上图2处的界面中有几个选项卡
Threads 为了调试方便,检测一个进程中的线程
Heap 是观察应用程序的堆栈信息的
File Explorer 列出当前选中的Android设备的文件目录结构
Emulator Control 对当前所选中的Android设备进行模拟操作,这其中也有几个选项
Telephony Status:电话状态,示例:Speed代表手机网络信号的速度变化。
Telephony Actions:电话动作 ,可以向模拟器打电话、发短信
示例:Call 是向模拟器打电话
Hang up 是让模拟器主动挂断电话
Location Controls
Longitude(经度),latitude(纬度)
(四)SDK目录介绍
add-ans: 扩展的插件,附加的信息
docs: 帮助文档,经常用
extras: 附加的目录,支持的jar包
platforms: 平台目录
platform-tools:开发时用到的工具。包含
adb.exe【Android debug bridge:安卓的调试桥,用于调试程序】、
aapt.exe【application package tools:安卓程序打包工具,完成的程序要打包成一 个.apk的文件】
dx.bat【将.class的字节码文件转换成.dex字节码文件,因为Android里面执行的 是.dex字节码文件】
samples: 示例代码
sources: 源代码目录
system-images:镜像目录
temp: 缓存文件
tools:新建的模拟器一般都放在该文件夹下,里面还包含一些工具:mksdcard.exe-->创 建一个sd卡,就是模拟器运行需要一个sd卡,这个就是在硬盘拟sd卡。【放的 是与模拟器相关的一些工具】
(五)adb常见命令及相关问题
1.adb: Android debug bridge:安卓的调试桥,用于调试程序
2.常见命令:
adb devices 列出所有的设备
可以列出包括真机的android设备,如果真机没有显示出来,检查两个地方: 真机的驱动是否安装和USB调试是否打开
adb shell 挂载到linux的空间 远程的访问到了模拟器终端
#ls 列出手机文件目录
#ps 列出手机运行的进程
#ping
adb kill-server 杀死服务
adb start-server 开启服务
如果不想敲这条命令,可以先敲adb devices,系统会自动开启服务,再检索
adb install xxx.apk 安装应用,敲完install可以把安装包直接拖拽到命令行窗口。
如果有多个设备,我们可以指定设备
adb install –s emulator-5554 D:/xxx.apk
否则会报错:error:more than one device and emulator
adb uninstall com.itheima.helloworld(程序包名称,而不是显示给用户的名称)
adb pull <remote> <local> 把手机内文件复制到电脑 最先在命令行中进入到你想到复制到哪的目录下再执行这条语句先手机的文件(不用加路径,直接文件名加扩展名) 后复制过来的文件名(也不用加路径,直接文件名加扩展名)
adb push <local> <remote>把电脑中文件复制到手机 最先在命令行中进入到你所想要复制文件的目录下再执行这条语句 先电脑的文件(不用加路径,直接文件名加扩展名) 后复制过来的路径(根目录/加上父目录)加文件名(文件名加扩展名)
android create avd –name android2.2 –target 8 创建模拟器
emulator –avd advname 启动模拟器 例如:emulator –avd 2.2 (2.2 为我们创建设备名称)
mksdcard 20m d:/sdcard.img 创建sdcard
3.问题及解决
1)adb是用socket写的。而socket本身不稳定,这样当网络出现了问题,或者端口被占用掉,adb就会挂掉, socket也就绑定失败了。
解决方式1:
在DDMS中,左侧设备这边有个倒三角小箭头,点开,列表中有个选项:Reset adb.作用是将adb杀死,再重启。
解决方式2:
其实DDMS所做的原理是这样的,我们也可以直接这样做:
在命令行里输入:adb kill-server
这时我们在使用模拟器时会报这样的错误:
Adb connection Error 远程主机强迫关闭了一个现有的连接
我们需要在命令行输入:adb start-server 服务就会重启。
但是如果服务没有启动,说明adb.exe进程可能无响应,在任务管理器中,进程选项卡中,找到adb.exe的进程,结束该进程。
如果发现进程结束不了,出现:can't find 5037的错误,说明有应用软件,将5037这个端口号占用,在命令行中输入:netstat -ano 列出当前端口号占用情况
这其中,外部地址为:端口号可以通过查找端口号为5037lai 查看是哪个PID,再在进程管理器中通过PID,来查看是哪个应用占用,结束应用,如果是eclipse占用,属于正常。
2)360,豌豆荚等第三方手机助手应用会内置adb,eclipse也会内置有adb,这样当他们同时运行时会造成不同的adb之间抢占同一端口,致使adb不稳定影响我们开发.只需关闭停止这些第三方手机助手的应用和服务即可。