黑马程序员技术交流社区
标题: 【黑马就业部出品】全课程视频同步笔记Android基础核心_day1 [打印本页]
作者: 冯瑞君老师 时间: 2015-8-13 12:35
标题: 【黑马就业部出品】全课程视频同步笔记Android基础核心_day1
一、 Android基础笔记
1. Android 入门
1.1. Android简介
1.1.1. 什么是1G、2G、3G、4G、5G
Ø 第一代移动通信技术(1st - Generation),只能进行语音通话。
Ø 第二代移动通信技术(2nd - Generation),可以收发短信、可以上网,但速度只有几十Kbps,而且不能在通话时使用。
Ø 第三代移动通信技术(3rd - Generation),速率一般在几百Kbps,并且可以通话时保持在线,移动互联网时代到来。
Ø 第四代移动通信技术(4th - Generation),速度可达到100Mbps以上,可以在线观看高清视频,上传下载大批量数据。
Ø 第五代移动通信技术(5th - Generation),速度可达到1Gbps以上,几乎满足人们的所有需求。
Ø 目前主流的3G技术标准有三种:
u WCDMA:全球80%以上的3G网络都是采用此种制式,中国联通运营
u CDMA2000:目前日韩及北美使用较多,中国电信运营
u TD-SCDMA:中国自主知识产权的3G通信技术,中国移动运营
Ø 目前主流的4G技术为LTE,有些国家已经普及,目前国内还没有,中移动声称在2013年将会推广:
u GSM à GPRS à EDGE à WCDMA à HSDPA à HSDPA+ à LTE
Ø 目前还没有任何电信公司使用:
u 2013年5月份,韩国三星宣布已成功开发5G核心技术,预计将于2020年开始部署
1.1.2. 什么是Android Ø Android本义指“
机器人”, Android系统早期由原名为“Android”的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营。
Ø Android系统最初由安迪·鲁宾等人开发制作,最初开发。这个系统的目的是创建一个数码相机的先进操作系统,后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统
Ø Google于2007宣布基于Linux平台的开源操作系统Android SDK1.0(预览版)发布,官方中文名:安卓 。
Ø 底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,大部分程序以Java语言编写。
Ø 由于Android系统的开源特性,很多制造商都在生产Android系统的设备,如:三星、摩托罗拉、HTC、索爱、LG、小米、华为、魅族等。
Ø Android系统除了运行在智能手机上之外,还可以用做平板电脑、电视、汽车、手表、眼镜等很多设备上。
1.1.3. Android的发展历史 课外拓展Ø 96年,手机性能低下,直接浏览网页比较困难,所以出现了wap制式。
Ø wap:wait and pay,由移动运营商将网站转发出去,网页格式:WML wireless markup Language:无线标记语言,他是精简版的html语言,少了很多html标签,解析成本较低
Ø 05年Google收购Android lnc,开始研究Dalvik VM
Ø 07年发布SDK1.0预览版
Ø 08年公布Android源代码,我国成立核高基项目(核心高级基础项目),主要研发本国的移动操作系统
1.1.4. Android版本介绍Ø 一张图看尽Android历史
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpgfile:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpgfile:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg
1.1.5. Android架构file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg
Ø 底层Linux核心的工作,安全管理、内存管理、进程管理、电源管理、硬件驱动
Ø Libraries:c代码库
u OpenGL:图形快速显示,游戏开发
u webkit:浏览器内核
Ø Android Runtime
u Dalvik VM:虚拟机,android代码运行在此虚拟机
u 运行时调用Libraries C代码库
Ø Application Framework中间介,java代码,调用底层c代码
Ø Applications原生的应用程序:浏览器、桌面、联系人等
1.1.6. 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的区别:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image011.png
1.1.7. ART模式概述ART模式是Android Runtime的简称,从Android 4.2开始出现。在Android 4.2以前,安卓手机系统的应用程序均在Dalvik Java的虚拟机上运行,这种运行模式是还要依靠一个编译器来实现与应用程序的沟通。应程序每次运行时,都需要将程序内的代码及时转变为机器码才能运行,这无形中多附加了一道手续,这就造成了耗电相对较快、占用内存大、即使是旗舰机用久了也会卡顿严重的现象。
ART模式通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。但凡事总有正反两面,ART在解决了该问题的同时,同时也有如:会占用略高一些的存储空间、安装程序时要相比普通Dalvik模式要长一些时间来实现预编译。
1.2. Android搭建开发环境1.2.1. JDK的安装和Java环境变量设置1. JDK下载地址
JDK(JavaDevelopment Kit)是整个Java的核心,包括一系列Java开发的东西,安装完毕需要配置一下环境变量。
2. JAVA_HOME
JDK的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利用%JAVA_HOME%作为统一引用路径,其值为:jdk在你电脑上的安装路径。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg
3. PATH
PATH属性已存在,可直接编辑。作用是用于配置路径,简化命令的输入,其值为:%JAVA_HOME%\bin。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg
4. CLASSPATH
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg
5. 验证JDK是否安装成功
配置完毕后,通过cmd运行以下命令:java -version,javac 如果出现返回信息,则设置成功。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg
1.2.2.下载、解压ADTØ 解压后直接打开eclipse文件夹中的eclipse.exe使用即可(需要提前安装JDK)
Ø 解压后目录结构为:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg
l eclipse就是存放编译器的目录。
l sdk为Android提供的软件开发工具包,SoftWare Development Kit。
l SDK Manager.exe就是sdk管理工具,下面会介绍。
Ø sdk目录为:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg
l add-ons:这里面保存着附加库,第三方库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面
l build-tools:保存着一些Android平台相关通用工具,比如adb、和aapt、aidl、dx等文件
l docs:这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。
l extras:附件文档,该文件夹下存放了google提供额USB驱动、Intel提供的硬件加速等附加工具包
l 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
l platform-tools:保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和platforms目录中tools文件夹有些重复,主要是从android2.3开始这些工具被划分为通用了。
l samples:是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学 习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主 题开发Home则是androidm5时代的主题设计原理。
l sources:用于Eclipse关联Android系统api源码
l system-images:加速器镜像文
l tools:作为SDK根目录下的tools文件夹,这里包含了重要的工具,比如ddms用于启动Android调试工具,比如logcat、屏 幕截图和文件管理器,而draw9patch则是绘制android平台的可缩放png图片的工具,sqlite3可以在PC上操作SQLite数据库, 而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像的创建工具,emulator是 Android SDK模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview作为android平台上重要的调试工具。
Ø platform-tools中常用工具
1. aapt.exe
AndroidAsset Package Tools Android自动化打包工具。
2. adb.exe
Android Debug Birdge,Android调试桥,
3. dx.bat
把所有class文件变成一个dex文件
1.2.3. SDK Manager 界面说明SDK更新管理器
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image025.jpg
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image027.jpg
Ø 4.1.2 API 16的目录
l SDK Platform:开发环境,jar包
l Samples for sdk:开发的实例代码
l Arm system image:模拟器镜像,使用arm处理器(手机处理器),创建模拟器时,可以选择不同的cpu
l Intel x86 image:使用的是intel的处理器
l Mips image:Mips的处理器
l Google apis:google提供的jar包,包括谷歌地图
l Sources for android sdk:android sdk的源码
Ø 其他目录:
l Tools:存放开发常用工具
l Extras:额外的附加内容
u Google AdWeb Ads SDK:谷歌提供的广告
u Google Analytis APP Tracking SDK:分析应用程序被下载的信息,数量,下载者ip等等
u Google USB Driver:可以让真机连接到电脑的驱动
u 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 奇巧巧克力棒
1.3. 模拟器AVD:Android virtual devices:Android虚拟设备就是模拟器、虚拟机
1.
2.
2.1.
2.2.
1.3.1. 创建模拟器点击如右图小机器人:file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image028.png
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg
VM Heap: 模拟器的内存,每一个应用程序所占内存
Snapshot:快照类似win7的睡眠作用。关闭模拟器时,会保存当前模拟器的一些活动状态,数据,下次启动会加载这些信息,启动速度比较快。但是这个快照有bug,不推荐勾选。
l 常见分辨率:Device
VGA:480*640,标准的视频接口分辨率
Qvga:240*320,只有VGA的四分之一
HVGA:480*320,只有VGA的二分之一,使用的比较少了,开发使用
WVGA:480*800,
FWVGAQ:480*854
l CPU:arm、intel,如果下载intel的加速器才能选择
要使用intel加速器,需要安装加速器,并且下载相应镜像文件
l Back camera:背部摄像头,Webcam:使用电脑的摄像头
l VM Heap:DVM的默认大小,单位是M, 每一个应用程序所占内存
l Internal Storage:手机内部存储大小
l Snapshot:快照,类似win7的睡眠作用。关闭模拟器时,会保存当前模拟器的一些活动状态,数据,下次启动会加载这些信息,启动速度比较快。但是这个快照有bug,不推荐勾选。
l Use host GPU:用电脑的显卡处理器,显卡的cpu,电脑独立显卡,可以勾选,这样模拟器会快点。集成显卡会花屏
1.3.2. 启动模拟器第一步:选择要启动的模拟器,点击右侧的start按钮。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image032.jpg
出现如下界面:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image034.jpg
最后点击Launch即可启动。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image035.png
第一次启动模拟器会比较慢,请耐心等待。
1.3.3. 模拟机启动问题Ø 无法启动问题
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image037.jpg
Ø 无响应问题
第一次启动会很慢,耐心等待。如果出现未响应则需要重启。
注意:电脑的Cpu如果是AMD的xp的话,有可能启动不起来,会出现未响应问题。建议重装系统为win7。实在不行就需要换Cpu为intel的电脑。然后使用加速器运行模拟器。
1.3.4. 模拟器无法保存数据启动模拟器,无法保持数据,添加联系人,短信草稿。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image039.jpg
导致这个问题的原因:
电脑非法关机,模拟器非法关闭,lock文件依然存在,可能导致这个问题
1.3.5. 模拟器无法联网Ø 如果模拟器显示无信号,需要对电脑的网络连接进行配置
Ø 无论电脑是否联网,IP地址、子网掩码、默认网关、首选DNS服务器都需要配置
Ø 电脑如果未连接局域网或互联网,可以见默认网关和首选DNS服务器配置成本机IP,例如:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image041.jpg
Ø 电脑如果已连接局域网,需要将网关和首选DNS服务器进行设置,例如:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image043.jpg
Ø 如果电脑已连接互联网,正常情况模拟器不会显示无信号,重启模拟器
1.3.6. 模拟器使用简介Ø 拨打电话
模拟器首页左下角有个拨打电话的按钮,点击之后出现如下界面:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image045.jpg
点击要拨打的电话号码,然后点击下方拨打按钮即可。想要退出当前应用,点击模拟器右侧的返回按钮即可。
Ø 上网
模拟器首页右下角有个浏览器,点击浏览器出现如下界面:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image047.jpg
可以在上方地址栏,输入想要访问的网址,点击回车即可浏览。
Ø Settings
点击屏幕下方中间按钮,进入到应用列表界面。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image049.jpg
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image051.jpg
Settings挺重要的,用的比较多。是整个模拟器的设置功能。
Ø Settings设置-display
显示设置:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image053.jpg
这里有一个Screen timeout,屏幕超时。超出设置时间,自动锁屏。在4.1中是Sleep选项。
Ø Settings-Language&keyboardsettings
语言&键盘设置:在4.1中是Language&input选项。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image055.jpg
在这里可以讲系统语言改为中文,也可以选择键盘、输入法。
Ø 如何卸载应用
4.1模拟器:在应用列表界面,上图。长按应用图标,然后拖到模拟器顶部,如下图:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image057.jpg
拖到Uninstall处丢手,然后会弹出是否卸载对话框,点击确定即可。
2.3模拟器:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image059.jpg
进入应用列表(也可以在Settings-Application中进入),然后选择要卸载的应用,点击Uninstall即可。4.1模拟器也可以使用这种方式卸载应用。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image061.jpg
Ø 如何清除应用缓存
跟卸载类似,将应用拖到页面顶部的App Info处丢手,即可见到下图界面:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image063.jpg
点击右下角的Cleardata即可清除此应用的缓存,sp文件,cache目录等。2.3模拟器清除缓存,与卸载应用类似,进到如下界面后,就可以Clearcache
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image064.jpg
1.3.7. 使用HAXM加速Android模拟器Android模拟器在支持IntelVT技术的CPU上,可以使用HAXM(HardwareAccelerated Execution Manager)得到硬件加速支持,使得模拟器运行速度得到极大提升,速度提升5-10倍。
注意:你必须拥有一颗支持VT的CPU,这个技术是Intel的,所以AMD的CPU是不能加速的。支持VT的CPU具体可以查询
想要使用HAXM技术,在Android开发环境中进行如下配置:
l 在Android SDK Manager中下载加速镜像文件:Intel x86 Atom System Image,你可以只下载你对应API版本的系统就可以了。
l 在Android SDK Manager中下载加速器:Intel Hardware Accelerated ExecutionManager Driver,这个是在Extras分类下面,默认是不安装的。file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image066.jpg
l 安装Intel HAXM driver。执行完第4步后,你就可以在android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager目录下找到安装程序,例如haxm-windows_r02.exe,安装即可。如果你的CPU不支持VT,会得到提示无法安装。
l 创建x86 AVD。这步很简单了,创建一个Android模拟器,关键是CPU要选择Intel x86 Atom,否则速度也提升不起来。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image068.jpg
如果选择某一个target,发现cpu没有intel atom,那就说明没有下载相应的镜像。如果发现target中没有某个版本的sdk(但是sdk/platform中有),因为选择的device不支持这个版本的系统。
1.3.8. adb命令行操作为了能在任意目录使用adb命令,需要将SDK目录下的platform-tools文件夹路径和tools文件夹路径配置到path环境变量中。
Ø adb:android debug briage,android调试桥
Ø 列出可以使用的android版本: android list targets
Ø 列出可以使用的模拟器: android list avd
Ø 创建模拟器: android create avd –n <模拟器名> -t<Target版本ID> -c <SD卡大小> -s <屏幕尺寸>
Ø 启动模拟器:emulator –avd <模拟器名>
Ø 显示已连接的设备:adb devices,显示内容:设备名,状态(device、offline)
Ø 导入文件到手机:adb push <Windows源文件路径> <手机目标路径>。 推:把电脑上的文件推送到模拟器里
Ø 从手机导出文件:adb pull <手机源文件路径> <Windows目录路径>
拉:把模拟器中的文件拉到电脑
Ø 安装程序:adb install <apk文件路径>
Ø 卸载程序:adb uninstall <包名>
卸载应用程序,如果执行此目录时,有两个设备同处于device状态,那么卸载时就要指定卸载哪一个设备上的应用程序:adb -s 设备名称 uninstall xxx.apk
Ø 重启adb: adb kill-server,abd start-server
Ø Adb shell:来到模拟器linux系统的终端里,列出模拟器的目录结构:与DDMS中File Explorer界面显示的目录结构一样
l ps:运行的进程
l kill -9 pid:杀死进程
1.3.9. DDMS介绍 dalvik debug manager system:delvik调试管理系统
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image070.jpg
Ø Devices
这里显示的是连接上的所有设备。大家发现没,上边那幅图中的这牌图标都是灰色的,而下边这幅图中的这排图标不是灰色的。原因是这些图标按钮都是操作某个进程的(设备下的都是进程。com.example.test就是一个进程),只有先选择某一个进程,这些按钮才会亮起来。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image072.jpg
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image074.jpgDebug小蜘蛛
此按钮是用来调试程序用的,比如要调试com.example.test,就先选中这个进程,然后点击Debug。此时只要在此程序的代码中打上断点,就可以进行调试。
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image076.jpgStart Method Profiling
顾名思义:开始方法的分析。此工具用来分析某个操作,某个方法的性能,在我们后期工作中可能会用的比较多。
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image078.jpgStop Process
停止进程,可以结束一个应用进程,杀死应用,清理缓存。
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image080.jpgScreen Capture
屏幕捕获,可以给连接上的设备截屏。
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image082.jpgDump View Hierarchy for UIAutomator
这个工具,可以分析当前模拟器显示的界面的层级视图。方便我们去模仿其他应用app的界面,也方便我们自己去分析自己界面的问题。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image084.jpg
右上角,我们可以看见此界面的视图层级。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image086.jpg
如图,选中另一面(1),右侧(2)视图层级处就可以定位到具体控件,下方是此控件的属性。
Ø File Explorer:文件系统
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image088.jpg
选中某一个模拟器(1),然后在右侧选择FileExplorer(2)。这里展示的是模拟器所有的文件目录,包括sdcard目录。
data-app:自己安装的应用程序apk文件存放的目录,安装的过程就是先上传到此目录,然后再安装。
data-data:应用程序安装目录。
mnt-sdcard:SD卡目录
system-->app:系统应用程序apk文件存放的目录
Ø 文件权限:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image090.jpg
这里的文件权限就是Linux里的权限。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image092.jpg
l 第一位:表示文件的类型。d表示文件夹、-表示文件
l Linux下的权限是三位一组,剩下的9位就是三组。一组表示一个权限。
l 前三位:表示当前用户的权限。当前用户对此文件的权限。
l rwx:可读、可写、可执行。
l 如果是-,那就是没这个权限。
Ø Emulator Control
模拟器控制器。在这里可以模仿打电话,发短信,定位等操作。但是针对的是模拟器,而不是真机。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image094.jpg
选择一个模拟器(1),然后右侧切换视图为Emulator Control。大家可能会发现Voice、SMS、Call按钮式是灰色的,这是因为还没有填写Incomming number。
Ø LogCat
日志猫,用来输出日志。这个比较重要,后期调试程序会经常用到。
1.3.10. 结合工作与面试Ø 命令
Adb命令一般在工作中会用到。
面试中会问到的是Linux常用命令,这个后期课程会涉及。
Ø 环境搭建
大家在刚入职的时候,第一天一般都是在新发的电脑上搭建环境。所以需要注意。
Ø 模拟器
我们现在在使用的模拟器不太稳定,有时会出现掉线,连接不上。不过谷歌最近提供了一个Android Studio,这个编译器自带一个模拟器相对会稳定一点。但是这个工具需要一些学习成本,感兴趣的同学可以研究下。
如果我们大家谁的模拟器不好用的话,建议直接使用真机测试。因为在工作中我们是使用真机去测试的,这样也可以提前熟悉一下真机测试。
Ø DDMS
这个非常重要:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image096.jpg
断点调试file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image097.jpg,方法分析file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image098.jpg,UI分析file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image099.jpg。用的会非常多,大家后期需要多加练习。
1.4. 开发一个Android程序1.
1.4.1. 创建Android工程Ø 第一步:在空白处(1)右键,New——Android Application Project,如下图
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image101.jpg
如果第三步没有Android Application Project,那么就选择最后一个Other,然后在找到Android Application Project。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image103.jpg
Ø 第二步:填写新工程的相关信息。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image105.jpg
l Package Name:包名,这个命名要具有一定意义,比如:com.公司名称.xxx
l Minimum Required SDK:工程最低要求运行版本
l Target SDK:最高可运行的版本
l Compile With:编译的版本,一般用较高的版本
l Theme:主题:none即可
注意这里的工程名是01.HelloWorld,这是下边的包名Package Name会自动生成com.example.1.helloworld,包名中不允许出现数字,所以删掉即可。
Ø 第三步:项目相关配置。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image107.jpg
Mark this project as a library,标志本工程开发的是一个jar包
Ø 第四步:应用图标配置
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image109.jpg
可以选择程序图标:选择Clipart,然后再choose具体的图片,还可以给图片指定颜色。
Ø 第五步:为新工程创建一个主界面Activity
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image111.jpg
给Activity命名:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image113.jpg
1.4.2. Android工程目录结构file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image115.jpg
Ø 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
l drawable:图片
l layout:界面布局
l menu:菜单
l values:字符串、样式等数据
l anim:动画
l raw:原生文件
l drawable-hdpi:高分辨率的图片目录
l drawable-ldpi:低分辨率的图片目录
l drawable-mdpi:中分辨率的图片目录
l drawable-xhdpi:大分辨率的图片目录
l drawable-xxhdpi:超大分辨率的图片目录
Ø AndroidManifest.xml:清单文件
Android中的四大组件(Activity、ContentProvider、BroadcastReceiver、Service)都需要在该文件中注册
程序所需的权限也需要在此文件中声明,例如:电话、短信、互联网、访问SD卡。
manifest节点:pakeage:是应用安装的路径data/data的目录,手机上的应用程序的不能有一样的包名/目录。
l manifest节点:
versionCode:应用程序版本号
versionName:应用程序版本名称
Ø proguard.cfg:
用来混淆代码的配置文件,防止别人反编译
Ø project.properties:
标记该项目使用SDK版本号,早期版本名为:default.properties
1.4.3. 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_main.xml文件
Ø activity_main.xml文件中描述了Activity的布局方式以及界面组件
Ø 解析activity_main.xml,通过反射创建对象,生成界面
1.4.4. Android程序打包安装过程file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image117.png
Android程序——编译打包——apk——签名——通过adb发布到设备上
编译打包:dx.bat;可以将bin目录下的classes文件、deseLibs依赖包打包成dex文件。还会将dex文件、工程的资源文件,和清单文件打包成apk,和签名文件(META-INF)(apk实际上是一个zip文件)
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image118.png
通过压缩文件打开apk,可以看见META0INF。dx.bat文件位于:D:\ProgramFiles\eclipse_adt-bundle-windows-x86\sdk\build-tools\android-xxx。
一、 Android基础笔记1. Android 入门1.1. Android简介1.1.1. 什么是1G、2G、3G、4G、5GØ 第一代移动通信技术(1st - Generation),只能进行语音通话。
Ø 第二代移动通信技术(2nd - Generation),可以收发短信、可以上网,但速度只有几十Kbps,而且不能在通话时使用。
Ø 第三代移动通信技术(3rd - Generation),速率一般在几百Kbps,并且可以通话时保持在线,移动互联网时代到来。
Ø 第四代移动通信技术(4th - Generation),速度可达到100Mbps以上,可以在线观看高清视频,上传下载大批量数据。
Ø 第五代移动通信技术(5th - Generation),速度可达到1Gbps以上,几乎满足人们的所有需求。
Ø 目前主流的3G技术标准有三种:
u WCDMA:全球80%以上的3G网络都是采用此种制式,中国联通运营
u CDMA2000:目前日韩及北美使用较多,中国电信运营
u TD-SCDMA:中国自主知识产权的3G通信技术,中国移动运营
Ø 目前主流的4G技术为LTE,有些国家已经普及,目前国内还没有,中移动声称在2013年将会推广:
u GSM à GPRS à EDGE à WCDMA à HSDPA à HSDPA+ à LTE
Ø 目前还没有任何电信公司使用:
u 2013年5月份,韩国三星宣布已成功开发5G核心技术,预计将于2020年开始部署
1.1.2. 什么是Android Ø Android本义指“
机器人”, Android系统早期由原名为“Android”的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营。
Ø Android系统最初由安迪·鲁宾等人开发制作,最初开发。这个系统的目的是创建一个数码相机的先进操作系统,后来发现市场需求不够大,加上智能手机市场快速成长,于是Android被改造为一款面向智能手机的操作系统
Ø Google于2007宣布基于Linux平台的开源操作系统Android SDK1.0(预览版)发布,官方中文名:安卓 。
Ø 底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,大部分程序以Java语言编写。
Ø 由于Android系统的开源特性,很多制造商都在生产Android系统的设备,如:三星、摩托罗拉、HTC、索爱、LG、小米、华为、魅族等。
Ø Android系统除了运行在智能手机上之外,还可以用做平板电脑、电视、汽车、手表、眼镜等很多设备上。
1.1.3. Android的发展历史 课外拓展Ø 96年,手机性能低下,直接浏览网页比较困难,所以出现了wap制式。
Ø wap:wait and pay,由移动运营商将网站转发出去,网页格式:WML wireless markup Language:无线标记语言,他是精简版的html语言,少了很多html标签,解析成本较低
Ø 05年Google收购Android lnc,开始研究Dalvik VM
Ø 07年发布SDK1.0预览版
Ø 08年公布Android源代码,我国成立核高基项目(核心高级基础项目),主要研发本国的移动操作系统
1.1.4. Android版本介绍Ø 一张图看尽Android历史
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpgfile:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image005.jpgfile:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg
1.1.5. Android架构file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg
Ø 底层Linux核心的工作,安全管理、内存管理、进程管理、电源管理、硬件驱动
Ø Libraries:c代码库
u OpenGL:图形快速显示,游戏开发
u webkit:浏览器内核
Ø Android Runtime
u Dalvik VM:虚拟机,android代码运行在此虚拟机
u 运行时调用Libraries C代码库
Ø Application Framework中间介,java代码,调用底层c代码
Ø Applications原生的应用程序:浏览器、桌面、联系人等
1.1.6. 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的区别:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image011.png
1.1.7. ART模式概述ART模式是Android Runtime的简称,从Android 4.2开始出现。在Android 4.2以前,安卓手机系统的应用程序均在Dalvik Java的虚拟机上运行,这种运行模式是还要依靠一个编译器来实现与应用程序的沟通。应程序每次运行时,都需要将程序内的代码及时转变为机器码才能运行,这无形中多附加了一道手续,这就造成了耗电相对较快、占用内存大、即使是旗舰机用久了也会卡顿严重的现象。
ART模式通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Dalvik模式要时时转换代码,实现高效率、省电、占用更低的系统内存、手机运行流畅。但凡事总有正反两面,ART在解决了该问题的同时,同时也有如:会占用略高一些的存储空间、安装程序时要相比普通Dalvik模式要长一些时间来实现预编译。
1.2. Android搭建开发环境1.2.1. JDK的安装和Java环境变量设置1. JDK下载地址
JDK(JavaDevelopment Kit)是整个Java的核心,包括一系列Java开发的东西,安装完毕需要配置一下环境变量。
2. JAVA_HOME
JDK的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利用%JAVA_HOME%作为统一引用路径,其值为:jdk在你电脑上的安装路径。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image013.jpg
3. PATH
PATH属性已存在,可直接编辑。作用是用于配置路径,简化命令的输入,其值为:%JAVA_HOME%\bin。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image015.jpg
4. CLASSPATH
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image017.jpg
5. 验证JDK是否安装成功
配置完毕后,通过cmd运行以下命令:java -version,javac 如果出现返回信息,则设置成功。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image019.jpg
1.2.2.下载、解压ADTØ 解压后直接打开eclipse文件夹中的eclipse.exe使用即可(需要提前安装JDK)
Ø 解压后目录结构为:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image021.jpg
l eclipse就是存放编译器的目录。
l sdk为Android提供的软件开发工具包,SoftWare Development Kit。
l SDK Manager.exe就是sdk管理工具,下面会介绍。
Ø sdk目录为:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image023.jpg
l add-ons:这里面保存着附加库,第三方库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面
l build-tools:保存着一些Android平台相关通用工具,比如adb、和aapt、aidl、dx等文件
l docs:这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。
l extras:附件文档,该文件夹下存放了google提供额USB驱动、Intel提供的硬件加速等附加工具包
l 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
l platform-tools:保存着一些通用工具,比如adb、和aapt、aidl、dx等文件,Android123提示,这里和platforms目录中tools文件夹有些重复,主要是从android2.3开始这些工具被划分为通用了。
l samples:是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学 习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主 题开发Home则是androidm5时代的主题设计原理。
l sources:用于Eclipse关联Android系统api源码
l system-images:加速器镜像文
l tools:作为SDK根目录下的tools文件夹,这里包含了重要的工具,比如ddms用于启动Android调试工具,比如logcat、屏 幕截图和文件管理器,而draw9patch则是绘制android平台的可缩放png图片的工具,sqlite3可以在PC上操作SQLite数据库, 而monkeyrunner则是一个不错的压力测试应用,模拟用户随机按键,mksdcard则是模拟器SD映像的创建工具,emulator是 Android SDK模拟器主程序,不过从android 1.5开始,需要输入合适的参数才能启动模拟器,traceview作为android平台上重要的调试工具。
Ø platform-tools中常用工具
1. aapt.exe
AndroidAsset Package Tools Android自动化打包工具。
2. adb.exe
Android Debug Birdge,Android调试桥,
3. dx.bat
把所有class文件变成一个dex文件
1.2.3. SDK Manager 界面说明SDK更新管理器
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image025.jpg
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image027.jpg
Ø 4.1.2 API 16的目录
l SDK Platform:开发环境,jar包
l Samples for sdk:开发的实例代码
l Arm system image:模拟器镜像,使用arm处理器(手机处理器),创建模拟器时,可以选择不同的cpu
l Intel x86 image:使用的是intel的处理器
l Mips image:Mips的处理器
l Google apis:google提供的jar包,包括谷歌地图
l Sources for android sdk:android sdk的源码
Ø 其他目录:
l Tools:存放开发常用工具
l Extras:额外的附加内容
u Google AdWeb Ads SDK:谷歌提供的广告
u Google Analytis APP Tracking SDK:分析应用程序被下载的信息,数量,下载者ip等等
u Google USB Driver:可以让真机连接到电脑的驱动
u 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 奇巧巧克力棒
1.3. 模拟器AVD:Android virtual devices:Android虚拟设备就是模拟器、虚拟机
1.
2.
2.1.
2.2.
1.3.1. 创建模拟器点击如右图小机器人:file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image028.png
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image030.jpg
VM Heap: 模拟器的内存,每一个应用程序所占内存
Snapshot:快照类似win7的睡眠作用。关闭模拟器时,会保存当前模拟器的一些活动状态,数据,下次启动会加载这些信息,启动速度比较快。但是这个快照有bug,不推荐勾选。
l 常见分辨率:Device
VGA:480*640,标准的视频接口分辨率
Qvga:240*320,只有VGA的四分之一
HVGA:480*320,只有VGA的二分之一,使用的比较少了,开发使用
WVGA:480*800,
FWVGAQ:480*854
l CPU:arm、intel,如果下载intel的加速器才能选择
要使用intel加速器,需要安装加速器,并且下载相应镜像文件
l Back camera:背部摄像头,Webcam:使用电脑的摄像头
l VM Heap:DVM的默认大小,单位是M, 每一个应用程序所占内存
l Internal Storage:手机内部存储大小
l Snapshot:快照,类似win7的睡眠作用。关闭模拟器时,会保存当前模拟器的一些活动状态,数据,下次启动会加载这些信息,启动速度比较快。但是这个快照有bug,不推荐勾选。
l Use host GPU:用电脑的显卡处理器,显卡的cpu,电脑独立显卡,可以勾选,这样模拟器会快点。集成显卡会花屏
1.3.2. 启动模拟器第一步:选择要启动的模拟器,点击右侧的start按钮。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image032.jpg
出现如下界面:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image034.jpg
最后点击Launch即可启动。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image035.png
第一次启动模拟器会比较慢,请耐心等待。
1.3.3. 模拟机启动问题Ø 无法启动问题
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image037.jpg
Ø 无响应问题
第一次启动会很慢,耐心等待。如果出现未响应则需要重启。
注意:电脑的Cpu如果是AMD的xp的话,有可能启动不起来,会出现未响应问题。建议重装系统为win7。实在不行就需要换Cpu为intel的电脑。然后使用加速器运行模拟器。
1.3.4. 模拟器无法保存数据启动模拟器,无法保持数据,添加联系人,短信草稿。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image039.jpg
导致这个问题的原因:
电脑非法关机,模拟器非法关闭,lock文件依然存在,可能导致这个问题
1.3.5. 模拟器无法联网Ø 如果模拟器显示无信号,需要对电脑的网络连接进行配置
Ø 无论电脑是否联网,IP地址、子网掩码、默认网关、首选DNS服务器都需要配置
Ø 电脑如果未连接局域网或互联网,可以见默认网关和首选DNS服务器配置成本机IP,例如:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image041.jpg
Ø 电脑如果已连接局域网,需要将网关和首选DNS服务器进行设置,例如:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image043.jpg
Ø 如果电脑已连接互联网,正常情况模拟器不会显示无信号,重启模拟器
1.3.6. 模拟器使用简介Ø 拨打电话
模拟器首页左下角有个拨打电话的按钮,点击之后出现如下界面:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image045.jpg
点击要拨打的电话号码,然后点击下方拨打按钮即可。想要退出当前应用,点击模拟器右侧的返回按钮即可。
Ø 上网
模拟器首页右下角有个浏览器,点击浏览器出现如下界面:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image047.jpg
可以在上方地址栏,输入想要访问的网址,点击回车即可浏览。
Ø Settings
点击屏幕下方中间按钮,进入到应用列表界面。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image049.jpg
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image051.jpg
Settings挺重要的,用的比较多。是整个模拟器的设置功能。
Ø Settings设置-display
显示设置:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image053.jpg
这里有一个Screen timeout,屏幕超时。超出设置时间,自动锁屏。在4.1中是Sleep选项。
Ø Settings-Language&keyboardsettings
语言&键盘设置:在4.1中是Language&input选项。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image055.jpg
在这里可以讲系统语言改为中文,也可以选择键盘、输入法。
Ø 如何卸载应用
4.1模拟器:在应用列表界面,上图。长按应用图标,然后拖到模拟器顶部,如下图:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image057.jpg
拖到Uninstall处丢手,然后会弹出是否卸载对话框,点击确定即可。
2.3模拟器:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image059.jpg
进入应用列表(也可以在Settings-Application中进入),然后选择要卸载的应用,点击Uninstall即可。4.1模拟器也可以使用这种方式卸载应用。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image061.jpg
Ø 如何清除应用缓存
跟卸载类似,将应用拖到页面顶部的App Info处丢手,即可见到下图界面:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image063.jpg
点击右下角的Cleardata即可清除此应用的缓存,sp文件,cache目录等。2.3模拟器清除缓存,与卸载应用类似,进到如下界面后,就可以Clearcache
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image064.jpg
1.3.7. 使用HAXM加速Android模拟器Android模拟器在支持IntelVT技术的CPU上,可以使用HAXM(HardwareAccelerated Execution Manager)得到硬件加速支持,使得模拟器运行速度得到极大提升,速度提升5-10倍。
注意:你必须拥有一颗支持VT的CPU,这个技术是Intel的,所以AMD的CPU是不能加速的。支持VT的CPU具体可以查询
想要使用HAXM技术,在Android开发环境中进行如下配置:
l 在Android SDK Manager中下载加速镜像文件:Intel x86 Atom System Image,你可以只下载你对应API版本的系统就可以了。
l 在Android SDK Manager中下载加速器:Intel Hardware Accelerated ExecutionManager Driver,这个是在Extras分类下面,默认是不安装的。file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image066.jpg
l 安装Intel HAXM driver。执行完第4步后,你就可以在android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager目录下找到安装程序,例如haxm-windows_r02.exe,安装即可。如果你的CPU不支持VT,会得到提示无法安装。
l 创建x86 AVD。这步很简单了,创建一个Android模拟器,关键是CPU要选择Intel x86 Atom,否则速度也提升不起来。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image068.jpg
如果选择某一个target,发现cpu没有intel atom,那就说明没有下载相应的镜像。如果发现target中没有某个版本的sdk(但是sdk/platform中有),因为选择的device不支持这个版本的系统。
1.3.8. adb命令行操作为了能在任意目录使用adb命令,需要将SDK目录下的platform-tools文件夹路径和tools文件夹路径配置到path环境变量中。
Ø adb:android debug briage,android调试桥
Ø 列出可以使用的android版本: android list targets
Ø 列出可以使用的模拟器: android list avd
Ø 创建模拟器: android create avd –n <模拟器名> -t<Target版本ID> -c <SD卡大小> -s <屏幕尺寸>
Ø 启动模拟器:emulator –avd <模拟器名>
Ø 显示已连接的设备:adb devices,显示内容:设备名,状态(device、offline)
Ø 导入文件到手机:adb push <Windows源文件路径> <手机目标路径>。 推:把电脑上的文件推送到模拟器里
Ø 从手机导出文件:adb pull <手机源文件路径> <Windows目录路径>
拉:把模拟器中的文件拉到电脑
Ø 安装程序:adb install <apk文件路径>
Ø 卸载程序:adb uninstall <包名>
卸载应用程序,如果执行此目录时,有两个设备同处于device状态,那么卸载时就要指定卸载哪一个设备上的应用程序:adb -s 设备名称 uninstall xxx.apk
Ø 重启adb: adb kill-server,abd start-server
Ø Adb shell:来到模拟器linux系统的终端里,列出模拟器的目录结构:与DDMS中File Explorer界面显示的目录结构一样
l ps:运行的进程
l kill -9 pid:杀死进程
1.3.9. DDMS介绍 dalvik debug manager system:delvik调试管理系统
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image070.jpg
Ø Devices
这里显示的是连接上的所有设备。大家发现没,上边那幅图中的这牌图标都是灰色的,而下边这幅图中的这排图标不是灰色的。原因是这些图标按钮都是操作某个进程的(设备下的都是进程。com.example.test就是一个进程),只有先选择某一个进程,这些按钮才会亮起来。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image072.jpg
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image074.jpgDebug小蜘蛛
此按钮是用来调试程序用的,比如要调试com.example.test,就先选中这个进程,然后点击Debug。此时只要在此程序的代码中打上断点,就可以进行调试。
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image076.jpgStart Method Profiling
顾名思义:开始方法的分析。此工具用来分析某个操作,某个方法的性能,在我们后期工作中可能会用的比较多。
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image078.jpgStop Process
停止进程,可以结束一个应用进程,杀死应用,清理缓存。
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image080.jpgScreen Capture
屏幕捕获,可以给连接上的设备截屏。
l file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image082.jpgDump View Hierarchy for UIAutomator
这个工具,可以分析当前模拟器显示的界面的层级视图。方便我们去模仿其他应用app的界面,也方便我们自己去分析自己界面的问题。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image084.jpg
右上角,我们可以看见此界面的视图层级。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image086.jpg
如图,选中另一面(1),右侧(2)视图层级处就可以定位到具体控件,下方是此控件的属性。
Ø File Explorer:文件系统
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image088.jpg
选中某一个模拟器(1),然后在右侧选择FileExplorer(2)。这里展示的是模拟器所有的文件目录,包括sdcard目录。
data-app:自己安装的应用程序apk文件存放的目录,安装的过程就是先上传到此目录,然后再安装。
data-data:应用程序安装目录。
mnt-sdcard:SD卡目录
system-->app:系统应用程序apk文件存放的目录
Ø 文件权限:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image090.jpg
这里的文件权限就是Linux里的权限。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image092.jpg
l 第一位:表示文件的类型。d表示文件夹、-表示文件
l Linux下的权限是三位一组,剩下的9位就是三组。一组表示一个权限。
l 前三位:表示当前用户的权限。当前用户对此文件的权限。
l rwx:可读、可写、可执行。
l 如果是-,那就是没这个权限。
Ø Emulator Control
模拟器控制器。在这里可以模仿打电话,发短信,定位等操作。但是针对的是模拟器,而不是真机。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image094.jpg
选择一个模拟器(1),然后右侧切换视图为Emulator Control。大家可能会发现Voice、SMS、Call按钮式是灰色的,这是因为还没有填写Incomming number。
Ø LogCat
日志猫,用来输出日志。这个比较重要,后期调试程序会经常用到。
1.3.10. 结合工作与面试Ø 命令
Adb命令一般在工作中会用到。
面试中会问到的是Linux常用命令,这个后期课程会涉及。
Ø 环境搭建
大家在刚入职的时候,第一天一般都是在新发的电脑上搭建环境。所以需要注意。
Ø 模拟器
我们现在在使用的模拟器不太稳定,有时会出现掉线,连接不上。不过谷歌最近提供了一个Android Studio,这个编译器自带一个模拟器相对会稳定一点。但是这个工具需要一些学习成本,感兴趣的同学可以研究下。
如果我们大家谁的模拟器不好用的话,建议直接使用真机测试。因为在工作中我们是使用真机去测试的,这样也可以提前熟悉一下真机测试。
Ø DDMS
这个非常重要:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image096.jpg
断点调试file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image097.jpg,方法分析file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image098.jpg,UI分析file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image099.jpg。用的会非常多,大家后期需要多加练习。
1.4. 开发一个Android程序1.
1.4.1. 创建Android工程Ø 第一步:在空白处(1)右键,New——Android Application Project,如下图
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image101.jpg
如果第三步没有Android Application Project,那么就选择最后一个Other,然后在找到Android Application Project。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image103.jpg
Ø 第二步:填写新工程的相关信息。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image105.jpg
l Package Name:包名,这个命名要具有一定意义,比如:com.公司名称.xxx
l Minimum Required SDK:工程最低要求运行版本
l Target SDK:最高可运行的版本
l Compile With:编译的版本,一般用较高的版本
l Theme:主题:none即可
注意这里的工程名是01.HelloWorld,这是下边的包名Package Name会自动生成com.example.1.helloworld,包名中不允许出现数字,所以删掉即可。
Ø 第三步:项目相关配置。
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image107.jpg
Mark this project as a library,标志本工程开发的是一个jar包
Ø 第四步:应用图标配置
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image109.jpg
可以选择程序图标:选择Clipart,然后再choose具体的图片,还可以给图片指定颜色。
Ø 第五步:为新工程创建一个主界面Activity
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image111.jpg
给Activity命名:
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image113.jpg
1.4.2. Android工程目录结构file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image115.jpg
Ø 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
l drawable:图片
l layout:界面布局
l menu:菜单
l values:字符串、样式等数据
l anim:动画
l raw:原生文件
l drawable-hdpi:高分辨率的图片目录
l drawable-ldpi:低分辨率的图片目录
l drawable-mdpi:中分辨率的图片目录
l drawable-xhdpi:大分辨率的图片目录
l drawable-xxhdpi:超大分辨率的图片目录
Ø AndroidManifest.xml:清单文件
Android中的四大组件(Activity、ContentProvider、BroadcastReceiver、Service)都需要在该文件中注册
程序所需的权限也需要在此文件中声明,例如:电话、短信、互联网、访问SD卡。
manifest节点:pakeage:是应用安装的路径data/data的目录,手机上的应用程序的不能有一样的包名/目录。
l manifest节点:
versionCode:应用程序版本号
versionName:应用程序版本名称
Ø proguard.cfg:
用来混淆代码的配置文件,防止别人反编译
Ø project.properties:
标记该项目使用SDK版本号,早期版本名为:default.properties
1.4.3. 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_main.xml文件
Ø activity_main.xml文件中描述了Activity的布局方式以及界面组件
Ø 解析activity_main.xml,通过反射创建对象,生成界面
1.4.4. Android程序打包安装过程file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image117.png
Android程序——编译打包——apk——签名——通过adb发布到设备上
编译打包:dx.bat;可以将bin目录下的classes文件、deseLibs依赖包打包成dex文件。还会将dex文件、工程的资源文件,和清单文件打包成apk,和签名文件(META-INF)(apk实际上是一个zip文件)
file:///C:/Users/Zaki/AppData/Local/Temp/msohtmlclip1/01/clip_image118.png
通过压缩文件打开apk,可以看见META0INF。dx.bat文件位于:D:\ProgramFiles\eclipse_adt-bundle-windows-x86\sdk\build-tools\android-xxx。
作者: 徐文豪 时间: 2015-8-17 22:18
老师 可不可以有打包的?上面的图片只有路径 看不到内容啊 谢谢老师的分享
作者: hejin67410 时间: 2015-8-25 10:29
搞不懂是什么
作者: ljdnm 时间: 2015-10-11 00:18
不错,看看巴
作者: wx_URVMBbXs 时间: 2015-10-31 23:39
谢谢老师的分享
作者: 送命的提莫 时间: 2015-11-1 19:29
绕我一命啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |