一、 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。
|