一、
Android基础笔记
1. Android 入门
Android简介
什么是1G、2G、3G、4G、5G
第一代移动通信技术(1st - Generation),只能进行语音通话。
第二代移动通信技术(2nd -
Generation),可以收发短信、可以上网,但速度只有几十Kbps,而且不能
在通话时使用。
第三代移动通信技术(3rd -
Generation),速率一般在几百Kbps,并且可以通话时保持在线,移动互联
网时代到来。
第四代移动通信技术(4th -
Generation),速度可达到100Mbps以上,可以在线观看高清视频,上传下
载大批量数据。
第五代移动通信技术(5th -
Generation),速度可达到1Gbps以上,几乎满足人们的所有需求。
目前主流的3G技术标准有三种:
WCDMA:全球80%以上的3G网络都是采用此种制式,中国联通运
营
CDMA2000:目前日韩及北美使用较多,中国电信运营
TD-SCDMA:中国自主知识产权的3G通信技术,中国移动运营
目前主流的4G技术为LTE,有些国家已经普及,目前国内还没有,中移动
声称在2013年将会推广:
GSM GPRS EDGE WCDMA HSDPA HSDPA+ LTE
目前还没有任何电信公司使用:
2013年5月份,韩国三星宣布已成功开发5G核心技术,预计将于202
0年开始部署
什么是Android
Android本义指“机器人”,
Android系统早期由原名为“Android”的公司开发,谷歌在2005年收购"Androi
d.Inc"后,继续对Android系统开发运营。
Android系统最初由安迪·鲁宾等人开发制作,最初开发。这个系统的目
的是创建一个数码相机的先进操作系统,后来发现市场需求不够大,加上
智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系
统
Google于2007宣布基于Linux平台的开源操作系统Android
SDK1.0(预览版)发布,官方中文名:安卓 。
底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,
大部分程序以Java语言编写。
由于Android系统的开源特性,很多制造商都在生产Android系统的设备
,如:三星、摩托罗拉、HTC、索爱、LG、小米、华为、魅族等。
Android系统除了运行在智能手机上之外,还可以用做平板电脑、电视、
汽车、手表、眼镜等很多设备上。
Android的发展历史 课外拓展
96年,手机性能低下,直接浏览网页比较困难,所以出现了wap制式。
wap:wait and pay,由移动运营商将网站转发出去,网页格式:WML
wireless markup
Language:无线标记语言,他是精简版的html语言,少了很多html标签,解
析成本较低
05年Google收购Android lnc,开始研究Dalvik VM
07年发布SDK1.0预览版
08年公布Android源代码,我国成立核高基项目(核心高级基础项目),主
要研发本国的移动操作系统
Android版本介绍
一张图看尽Android历史
Android架构
底层Linux核心的工作,安全管理、内存管理、进程管理、电源管理、硬件驱
动
Libraries:c代码库
OpenGL:图形快速显示,游戏开发
webkit:浏览器内核
Android Runtime
Dalvik VM:虚拟机,android代码运行在此虚拟机
运行时调用Libraries C代码库
Application Framework中间介,java代码,调用底层c代码
Applications原生的应用程序:浏览器、桌面、联系人等
Dalvik VM和传统JVM的区别
传统JVM
编写.java文件 编译为.class文件
打包成.jar文件,将java源码编译为class文件,然后将一组class打包成jar。
基于栈结构,栈存储于内存中,所以需要用到内存空间
Dalvik VM
编写.java文件 编译为.class文件 打包成.dex文件
打包成.apk文件。将一组class编译为一个dex文件,然后有的平台为了更高
的效率会将一个dex转换成odex文件。将N多个class文件编译为一个dex,这
样执行效率会比较快,更适合在移动平台运行。基于寄存器的结构,寄存
器在cpu中,所以用到cpu的空间
DVM与JVM的区别:
ART模式概述
ART模式是Android Runtime的简称,从Android 4.2开始出现。在Android
4.2以前,安卓手机系统的应用程序均在Dalvik
Java的虚拟机上运行,这种运行模式是还要依靠一个编译器来实现与应用程序
的沟通。应程序每次运行时,都需要将程序内的代码及时转变为机器码才能运
行,这无形中多附加了一道手续,这就造成了耗电相对较快、占用内存大、即
使是旗舰机用久了也会卡顿严重的现象。
ART模式通过在安装应用程序时,自动对程序进行代码预读取编译,让程
序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省
电、占用更低的系统内存、手机运行流畅。但凡事总有正反两面,ART在解决
了该问题的同时,同时也有如:会占用略高一些的存储空间、安装程序时要相
比普通Dalvik模式要长一些时间来实现预编译。
Android搭建开发环境
JDK的安装和Java环境变量设置
1.
JDK下载地址
安装Android开发环境前,需要给电脑配置JDK。下载地址:http://www.orac
le.com/technetwork/java/javase/downloads/index.html
JDK(Java
Development
Kit)是整个Java的核心,包括一系列Java开发的东西,安装完毕需要配置一下环
境变量。
2.
JAVA_HOME
JDK的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利
用%JAVA_HOME%作为统一引用路径,其值为:jdk在你电脑上的安装路径。
3.
PATH
PATH属性已存在,可直接编辑。作用是用于配置路径,简化命令的输入
,其值为:%JAVA_HOME%\bin。
4.
CLASSPATH
5.
验证JDK是否安装成功
配置完毕后,通过cmd运行以下命令:java
-version,javac
如果出现返回信息,则设置成功。
下载、解压ADT
windows64位ADT下载地址:http://pan.baidu.com/s/1dD3s3bN
ADT集合:www.cnblogs.com/tc310/p/3938353.html
解压后直接打开eclipse文件夹中的eclipse.exe使用即可(需要提前安装JD
K)
解压后目录结构为:
eclipse就是存放编译器的目录。
sdk为Android提供的软件开发工具包,SoftWare Development
Kit。
SDK Manager.exe就是sdk管理工具,下面会介绍。
sdk目录为:
add-
ons:这里面保存着附加库,第三方库,比如GoogleMaps,当然你
如果安装了OphoneSDK,这里也会有一些类库在里面
build-
tools:保存着一些Android平台相关通用工具,比如adb、和aapt、ai
dl、dx等文件
docs:这里面是Android
SDKAPI参考文档,所有的API都可以在这里查到。
extras:附件文档,该文件夹下存放了google提供额USB驱动、Intel
提供的硬件加速等附加工具包
platforms:是每个平台的SDK真正的文件,里面会根据APILevel划
分的SDK版本,这里就以Android2.2来说,进入后有 一个android-
8的文件夹,android-
8进入后是Android2.2SDK的主要文件,其中ant为ant编译脚本,data
保存着一些系
统资源,images是模拟器映像文件,skins则是Android模拟器的皮肤
,templates是工程创建的默认模板,android.jar则
是该版本的主要framework文件,tools目录里面包含了重要的编译工
具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx
platform-
tools:保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,A
ndroid123提示,这里和platforms目录中tools文件夹有些重复,主要
是从android2.3开始这些工具被划分为通用了。
samples:是Android
SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学
习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开
发Snake、LunarLander都是不错的例子,对于Android主
题开发Home则是androidm5时代的主题设计原理。
sources:用于Eclipse关联Android系统api源码
system-images:加速器镜像文
tools:作为SDK根目录下的tools文件夹,这里包含了重要的工具,
比如ddms用于启动Android调试工具,比如logcat、屏
幕截图和文件管理器,而draw9patch则是绘制android平台的可缩放p
ng图片的工具,sqlite3可以在PC上操作SQLite数据库,
而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按键
,mksdcard则是模拟器SD映像的创建工具,emulator是 Android
SDK模拟器主程序,不过从android
1.5开始,需要输入合适的参数才能启动模拟器,traceview作为andr
oid平台上重要的调试工具。
platform-tools中常用工具
1.
aapt.exe
Android Asset Package Tools Android自动化打包工具。
2.
adb.exe
Android Debug Birdge,Android调试桥,
3.
dx.bat
把所有class文件变成一个dex文件
SDK Manager 界面说明
SDK更新管理器
4.1.2 API 16的目录
SDK Platform:开发环境,jar包
Samples for sdk:开发的实例代码
Arm system
image:模拟器镜像,使用arm处理器(手机处理器),创建模拟器时,
可以选择不同的cpu
Intel x86 image:使用的是intel的处理器
Mips image:Mips的处理器
Google apis:google提供的jar包,包括谷歌地图
Sources for android sdk:android sdk的源码
其他目录:
Tools:存放开发常用工具
Extras:额外的附加内容
Google AdWeb Ads SDK:谷歌提供的广告
Google Analytis APP Tracking
SDK:分析应用程序被下载的信息,数量,下载者ip等等
Google USB Driver:可以让真机连接到电脑的驱动
Intel x86 Emluator
accelerate:intel的模拟器加速器,电脑必须是intel处理器。这个软
件可以将电脑cpu交给模拟器使用,起到加速作用。
版本对应API级别
API等级1: Android 1.0
API等级2: Android 1.1 Petit Four 花式小蛋糕
API等级3: Android 1.5 Cupcake 纸杯蛋糕
API等级4: Android 1.6 Donut 甜甜圈
API等级5: Android 2.0 Éclair 松饼
API等级6: Android 2.0.1 Éclair 松饼
API等级7: Android 2.1 Éclair 松饼
API等级8: Android 2.2 - 2.2.3 Froyo 冻酸奶
API等级9: Android 2.3 - 2.3.2 Gingerbread 姜饼
API等级10:Android 2.3.3-2.3.7 Gingerbread 姜饼
API等级11:Android 3.0 Honeycomb 蜂巢
API等级12:Android 3.1 Honeycomb 蜂巢
API等级13:Android 3.2 Honeycomb 蜂巢
API等级14:Android 4.0 - 4.0.2 Ice Cream Sandwich 冰激凌三明治
API等级15:Android 4.0.3 - 4.0.4 Ice Cream Sandwich 冰激凌三明治
API等级16:Android 4.1 Jelly Bean 糖豆
API等级17:Android 4.2 Jelly Bean 糖豆
API等级18:Android 4.3 Jelly Bean 糖豆
API等级19:Android 4.4 KitKat 奇巧巧克力棒
模拟器
AVD:Android virtual devices:Android虚拟设备就是模拟器、虚拟机
创建模拟器
点击如右图小机器人:
VM Heap: 模拟器的内存,每一个应用程序所占内存
Snapshot:快照类似win7的睡眠作用。关闭模拟器时,会保存当前模拟器的
一些活动状态,数据,下次启动会加载这些信息,启动速度比较快。但是
这个快照有bug,不推荐勾选。
常见分辨率:Device
VGA:480*640,标准的视频接口分辨率
Qvga:240*320,只有VGA的四分之一
HVGA:480*320,只有VGA的二分之一,使用的比较少了,开发使用
WVGA:480*800,
FWVGAQ:480*854
CPU:arm、intel,如果下载intel的加速器才能选择
要使用intel加速器,需要安装加速器,并且下载相应镜像文件
Back camera:背部摄像头,Webcam:使用电脑的摄像头
VM Heap:DVM的默认大小,单位是M, 每一个应用程序所占内存
Internal Storage:手机内部存储大小
Snapshot:快照,类似win7的睡眠作用。关闭模拟器时,会保存当前模拟器
的一些活动状态,数据,下次启动会加载这些信息,启动速度比较快。但
是这个快照有bug,不推荐勾选。
Use host
GPU:用电脑的显卡处理器,显卡的cpu,电脑独立显卡,可以勾选,这样
模拟器会快点。集成显卡会花屏
启动模拟器
第一步:选择要启动的模拟器,点击右侧的start按钮。
出现如下界面:
最后点击Launch即可启动。
第一次启动模拟器会比较慢,请耐心等待。
模拟机启动问题
无法启动问题
无响应问题
第一次启动会很慢,耐心等待。如果出现未响应则需要重启。
注意:电脑的Cpu如果是AMD的xp的话,有可能启动不起来,会出现未响
应问题。建议重装系统为win7。实在不行就需要换Cpu为intel的电脑。然后
使用加速器运行模拟器。
模拟器无法保存数据
启动模拟器,无法保持数据,添加联系人,短信草稿。
导致这个问题的原因:
电脑非法关机,模拟器非法关闭,lock文件依然存在,可能导致这个问题
模拟器无法联网
如果模拟器显示无信号,需要对电脑的网络连接进行配置
无论电脑是否联网,IP地址、子网掩码、默认网关、首选DNS服务器都
需要配置
电脑如果未连接局域网或互联网,可以见默认网关和首选DNS服务器配
置成本机IP,例如:
电脑如果已连接局域网,需要将网关和首选DNS服务器进行设置,例如:
如果电脑已连接互联网,正常情况模拟器不会显示无信号,重启模拟器
模拟器使用简介
拨打电话
模拟器首页左下角有个拨打电话的按钮,点击之后出现如下界面:
点击要拨打的电话号码,然后点击下方拨打按钮即可。想要退出当前应用
,点击模拟器右侧的返回按钮即可。
上网
模拟器首页右下角有个浏览器,点击浏览器出现如下界面:
可以在上方地址栏,输入想要访问的网址,点击回车即可浏览。
Settings
点击屏幕下方中间按钮,进入到应用列表界面。
Settings挺重要的,用的比较多。是整个模拟器的设置功能。
Settings设置-display
显示设置:
这里有一个Screen
timeout,屏幕超时。超出设置时间,自动锁屏。在4.1中是Sleep选项。
Settings-Language&keyboard settings
语言&键盘设置:在4.1中是Language&input选项。
在这里可以讲系统语言改为中文,也可以选择键盘、输入法。
如何卸载应用
4.1模拟器:在应用列表界面,上图。长按应用图标,然后拖到模拟器顶部
,如下图:
拖到Uninstall处丢手,然后会弹出是否卸载对话框,点击确定即可。
2.3模拟器:
进入应用列表(也可以在Settings-
Application中进入),然后选择要卸载的应用,点击Uninstall即可。4.1模拟器
也可以使用这种方式卸载应用。
如何清除应用缓存
跟卸载类似,将应用拖到页面顶部的App
Info处丢手,即可见到下图界面:
点击右下角的Clear
data即可清除此应用的缓存,sp文件,cache目录等。2.3模拟器清除缓存,与卸
载应用类似,进到如下界面后,就可以Clear cache
使用HAXM加速Android模拟器
Android模拟器在支持Intel VT技术的CPU上,可以使用HAXM(Hardware
Accelerated Execution
Manager)得到硬件加速支持,使得模拟器运行速度得到极大提升,速度提升5-
10倍。
注意:你必须拥有一颗支持VT的CPU,这个技术是Intel的,所以AMD的C
PU是不能加速的。支持VT的CPU具体可以查询
http://ark.intel.com/Products/VirtualizationTechnology,一般i5以上的CPU都是没问
题的。
想要使用HAXM技术,在Android开发环境中进行如下配置:
在Android SDK Manager中下载加速镜像文件:Intel x86 Atom
System Image,你可以只下载你对应API版本的系统就可以了。
在Android SDK Manager中下载加速器:Intel Hardware Accelerated
Execution Manager
Driver,这个是在Extras分类下面,默认是不安装的。
安装Intel HAXM driver。执行完第4步后,你就可以在android-
sdk\extras\intel\Hardware_Accelerated_Execution_Manager目录下找到
安装程序,例如haxm-
windows_r02.exe,安装即可。如果你的CPU不支持VT,会得到提
示无法安装。
创建x86
AVD。这步很简单了,创建一个Android模拟器,关键是CPU要选
择Intel x86 Atom,否则速度也提升不起来。
如果选择某一个target,发现cpu没有intel
atom,那就说明没有下载相应的镜像。如果发现target中没有某个版本的sdk(
但是sdk/platform中有),因为选择的device不支持这个版本的系统。
adb命令行操作
为了能在任意目录使用adb命令,需要将SDK目录下的platform-
tools文件夹路径和tools文件夹路径配置到path环境变量中。
adb:android debug briage,android调试桥
列出可以使用的android版本: android list targets
列出可以使用的模拟器: android list avd
创建模拟器: android create avd –n <模拟器名> -t
-c
-s <屏幕尺寸>
启动模拟器:emulator –avd <模拟器名>
显示已连接的设备:adb
devices,显示内容:设备名,状态(device、offline)
导入文件到手机:adb push <手机目标路径>。
推:把电脑上的文件推送到模拟器里
从手机导出文件:adb pull <手机源文件路径>
拉:把模拟器中的文件拉到电脑
安装程序:adb install
卸载程序:adb uninstall <包名>
卸载应用程序,如果执行此目录时,有两个设备同处于device状态,那
么卸载时就要指定卸载哪一个设备上的应用程序:adb -s 设备名称
uninstall xxx.apk
重启adb: adb kill-server,abd start-server
Adb
shell:来到模拟器linux系统的终端里,列出模拟器的目录结构:与DDMS中Fil
e Explorer界面显示的目录结构一样
ps:运行的进程
kill -9 pid:杀死进程
DDMS介绍
dalvik debug manager system:delvik调试管理系统
Devices
这里显示的是连接上的所有设备。大家发现没,上边那幅图中的这牌
图标都是灰色的,而下边这幅图中的这排图标不是灰色的。原因是这些图
标按钮都是操作某个进程的(设备下的都是进程。com.example.test就是一
个进程),只有先选择某一个进程,这些按钮才会亮起来。
Debug小蜘蛛
此按钮是用来调试程序用的,比如要调试com.example.test,就先选
中这个进程,然后点击Debug。此时只要在此程序的代码中打上断
点,就可以进行调试。
Start Method Profiling
顾名思义:开始方法的分析。此工具用来分析某个操作,某个方法
的性能,在我们后期工作中可能会用的比较多。
Stop Process
停止进程,可以结束一个应用进程,杀死应用,清理缓存。
Screen Capture
屏幕捕获,可以给连接上的设备截屏。
Dump View Hierarchy for UI Automator
这个工具,可以分析当前模拟器显示的界面的层级视图。方便我们
去模仿其他应用app的界面,也方便我们自己去分析自己界面的问
题。
右上角,我们可以看见此界面的视图层级。
如图,选中另一面(1),右侧(2)视图层级处就可以定位到具体控件
,下方是此控件的属性。
File Explorer:文件系统
选中某一个模拟器(1),然后在右侧选择FileExplorer(2)。这里展示的是
模拟器所有的文件目录,包括sdcard目录。
data-
app:自己安装的应用程序apk文件存放的目录,安装的过程就是先上传到
此目录,然后再安装。
data-data:应用程序安装目录。
mnt-sdcard:SD卡目录
system-->app:系统应用程序apk文件存放的目录
文件权限:
这里的文件权限就是Linux里的权限。
第一位:表示文件的类型。d表示文件夹、-表示文件
Linux下的权限是三位一组,剩下的9位就是三组。一组表示一个权
限。
前三位:表示当前用户的权限。当前用户对此文件的权限。
rwx:可读、可写、可执行。
如果是-,那就是没这个权限。
Emulator Control
模拟器控制器。在这里可以模仿打电话,发短信,定位等操作。但是针
对的是模拟器,而不是真机。
选择一个模拟器(1),然后右侧切换视图为Emulator
Control。大家可能会发现Voice、SMS、Call按钮式是灰色的,这是因为还没有
填写Incomming number。
LogCat
日志猫,用来输出日志。这个比较重要,后期调试程序会经常用到。
结合工作与面试
命令
Adb命令一般在工作中会用到。
面试中会问到的是Linux常用命令,这个后期课程会涉及。
环境搭建
大家在刚入职的时候,第一天一般都是在新发的电脑上搭建环境。所以
需要注意。
模拟器
我们现在在使用的模拟器不太稳定,有时会出现掉线,连接不上。不过
谷歌最近提供了一个Android
Studio,这个编译器自带一个模拟器相对会稳定一点。但是这个工具需
要一些学习成本,感兴趣的同学可以研究下。
如果我们大家谁的模拟器不好用的话,建议直接使用真机测试。因为在
工作中我们是使用真机去测试的,这样也可以提前熟悉一下真机测试。
DDMS
这个非常重要:
断点调试
,方法分析
,UI分析
。用的会非常多,大家后期需要
多加练习。
开发一个Android程序
创建Android工程
第一步:在空白处(1)右键,New——Android Application Project,如下图
如果第三步没有Android Application
Project,那么就选择最后一个Other,然后在找到Android Application Project。
第二步:填写新工程的相关信息。
Package
Name:包名,这个命名要具有一定意义,比如:com.公司名称.xxx
Minimum Required SDK:工程最低要求运行版本
Target SDK:最高可运行的版本
Compile With:编译的版本,一般用较高的版本
Theme:主题:none即可
注意这里的工程名是01.HelloWorld,这是下边的包名Package
Name会自动生成com.example.1.helloworld,包名中不允许出现数字,所以删掉
即可。
第三步:项目相关配置。
Mark this project as a library,标志本工程开发的是一个jar包
第四步:应用图标配置
可以选择程序图标:选择Clipart,然后再choose具体的图片,还可以给图片指定
颜色。
第五步:为新工程创建一个主界面Activity
给Activity命名:
Android工程目录结构
src:源代码。如果最初选择创建Activity,会有一个Activity的子类
gen:系统自动生成的文件。R.java 中记录了项目中各种资源ID
BuildConfig.java 标记项目是否可以Debug
Android 4.4
当前工程所使用的SDK类库
Android Private Libraries
用来支持各个版本的类库
assets:资源文件
不会在R文件注册,原封不动发布
里面可以放置应用程序依赖的一些文件
如果此文件夹中存放的文件过大,在发布时,上传apk将会很慢。
bin:编译后的二进制文件
包括class、资源文件、dex、apk、清单文件等
libs:工程中使用的库
默认带有版本支持的类库,像v4、v7包
res:系统资源,所有文件都会在R文件生成资源ID
drawable:图片
layout:界面布局
menu:菜单
values:字符串、样式等数据
anim:动画
raw:原生文件
drawable-hdpi:高分辨率的图片目录
drawable-ldpi:低分辨率的图片目录
drawable-mdpi:中分辨率的图片目录
drawable-xhdpi:大分辨率的图片目录
drawable-xxhdpi:超大分辨率的图片目录
AndroidManifest.xml:清单文件
Android中的四大组件(Activity、ContentProvider、BroadcastReceiver、
Service)都需要在该文件中注册
程序所需的权限也需要在此文件中声明,例如:电话、短信、互联网、
访问SD卡。
manifest节点:pakeage:是应用安装的路径data/data的目录,手机上的
应用程序的不能有一样的包名/目录。
manifest节点:
versionCode:应用程序版本号
versionName:应用程序版本名称
proguard.cfg:
用来混淆代码的配置文件,防止别人反编译
project.properties:
标记该项目使用SDK版本号,早期版本名为:default.properties
Android程序部署与启动
应用程序安装、发布:Package Explorer中右键点击工程 – Run As –
Android Application,快捷键Ctrl+F11
程序启动过程:
Eclipse将.java源文件编译成.class
dx工具将所有.class文件转换为.dex文件
再将.dex文件和所有资源打包成.apk文件
将.apk文件上传并安装到模拟器,存储在/data/app目录下
启动程序,开启进程
根据AndroidManifest.xml文件找到MainActivity类,创建Activity
Activity创建后执行onCreate(Bundle)方法,根据R.layout.activity_main构建
界面
R.layout.activity_main是R类中的一个成员变量,指向res/layout/activity_m
ain.xml文件
activity_main.xml文件中描述了Activity的布局方式以及界面组件
解析activity_main.xml,通过反射创建对象,生成界面
Android程序打包安装过程
Android程序——编译打包——apk——签名——通过adb发布到设备上
编译打包:dx.bat;可以将bin目录下的classes文件、deseLibs依赖包打包成d
ex文件。还会将dex文件、工程的资源文件,和清单文件打包成apk,和签名文
件(META-INF)(apk实际上是一个zip文件)
通过压缩文件打开apk,可以看见META0INF。dx.bat文件位于:D:\Program
Files\eclipse_adt-bundle-windows-x86\sdk\build-tools\android-xxx。
-----------------------源自培训笔记----------------------