1、#1 手机平台概述 郑贵锋郑贵锋 博士博士 内容提要 移动互联网趋势 我们的机遇 智能手机平台简介 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 移动互联网趋势移动互联网趋势 国内外现状与发展趋势 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 2020年8月6日星期四 郑贵锋 博士 移动互联网 市场规模 2013年 1059.8亿元 进入 高速发展通道 2020年8月6日星期四 2013年手机保有量 5.8亿台 同比增长60.3% 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 2020年8月6日星期四 郑贵锋 博士 2020年8月6日
2、星期四 艾瑞观点 2013年是移动互联网市场加速“重塑、培 育、共建”的一年。 4G的商用,虚拟运营商的进入,投资并购 案增多,无不显示着移动互联网市场正在 经历着深刻的行业变革与进化。 各类玩家经历了过去4、5年的摸索与试炼, 形成了对这个市场更多的认知,商业模式 的探索渐出成效,将开启移动互联网市场 规模快速增长的通道。 2020年8月6日星期四 艾瑞观点 2014年,伴随着终端价格的降低,移动网民的快速渗透和网络基础设施的日益完善, 移动互联网市场将向内陆城市深度辐射向内陆城市深度辐射, 在不同地域之间的多元发展态势也将为移动互 联网的市场参与者提供更多的发展机遇。 在一、二线城市平稳快
3、速发展,“移动互联”应用形态丰富性大大提升,移动端产品在创新中 寻求差异。 在三、四线城市,移动互联网市场将加速发展,本地化服务与“移动互联”呈现创新结合。 与此同时,尽管在过去的一年,各大巨头在各自专注领域已基本完成入口的抢占,但 其消费闭环的营造尚未完结,未来的一年,深化差异化创新,争夺用户,提升移动端未来的一年,深化差异化创新,争夺用户,提升移动端 用户活跃,挖掘移动端流量价值将是移动互联网行业的主体基调。用户活跃,挖掘移动端流量价值将是移动互联网行业的主体基调。 2014年将是充满机会与挑战的一年,市场中的投资并购仍将继续,以移动硬件普及、 网络基础设施提升带来的市场容量的扩张将为移动
4、互联网市场的持续增长提供内源动 力,而行业参与者的增加也将为市场竞争注入鲜活的力量。 2020年8月6日星期四 2014年10大移动互联网趋势 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 我们的机遇我们的机遇 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 移动互联传奇故事 Angry Birds (愤怒的小鸟),开 发商是Rovio公司,芬兰赫尔辛基 理工大学的学生创业学生创业产生。 累计1亿多次下载量,创收7000万 美元,这几只没脚没翅膀的“愤 怒的小鸟”不但拯救了一家濒临 破残的游戏公司,也让这家昔日 只为巨头“打零工”的芬兰小公 司有机会成为“
5、超级玛丽之父” 任天堂那样的游戏帝国。 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 Fruit Ninja自2010年4月发布以来,在移动终端 上已经获得了超过6500万次的下载。其在相当长 的一段时间内游走于App Store付费应用前5名之 中,并且会不时地随着游戏的版本更新而问鼎。 移动互联传奇故事 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 移动互联传奇故事 2012年3月22日,著名社交游戏公司Zynga以2亿美元的价格收购 了你画我猜你画我猜游戏Draw Something开发商OMGPOP。 OMGPOP成立于2006年,而异常火爆的D
6、raw Something于今年2 月6日正式登录Android和iOS平台,也只有1个多月时间。 5周时间,下载量2000万次, 1200万活跃用户,1小时最多 在线人数450万, 每天收入达6位数(25万美元) 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 移动互联传奇故事 诞生551天的Instagram值10亿美元,被Facebook收购。因 为 12 million users in 12 months Instagram 团队只有13名员工。 CEO非科班出身! 业余作品 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 例:Instagram的
7、飞速上传的飞速上传 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 智能手机平台智能手机平台 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 新“三国”演义 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 移动平台应用程序商店 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 对比一下在iPhone App Store中排名前35的应用,包括那些相似的 可以作为替代品的应用,Android Market拥有32个相同的或相似的应用, 而Windows Phone 7有27个。然后依次是Ovi Store的24个,Blackb
8、erry App World的22个,Palm App Catalog的21个。 移动平台应用程序商店 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 智能手机平台对比智能手机平台对比 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 主流移动平台OS对比 微软Windows Phone 苹果iOS 谷歌Android 未来的WebOS 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 微软Windows phone 闭源 IDE Visual Studio 2010 Blend 4 WP7.5 Emulator 开发语言:C#、VB、F# 开
9、发机OS:Windows 7/Vista 框架 .NET 4 Silverlight 4 XNA 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 微软Windows Phone 优势 全新Metro风格,用户体验高 与桌面新OS Win8统一 官方力推,开发者支持度高 游戏与一般应用架构分离 开发门槛低 劣势 需要开发者账号(学生免费) 目前应用少! 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 苹果iOS 源于OSX(UNIX系统,10年历史) 内核操作系统层(the Core OS layer) 内核服务层(the Core Services laye
10、r) 媒体层(the Media layer) 可轻触层(the Cocoa Touch layer) 源码模式:封闭源码+开放源码组件 基于Objective-C, OO 开发工具:Xcode, Interface Builder, SDK 开发机OS: Mac OSX 框架:Cocoa, MVC 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 苹果iOS 优势 开发框架成熟,与MAC桌面OS通用 无虚拟机,性能好 设备集成度高 应用丰富,精品多 竞争激烈管理有序,开发者也容易挣钱 劣势 Must have a MAC! An iPhone, an iPad! 贵! 开发者
11、账号99美元/年! Objective C 另类,学习门槛高! 官方开发者支持度低! 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 谷歌Android 基于JAVA的系统,运行在 Linux 2.6内核上(非Linux) 开源、无缝移动互联网支持 众多厂商支持:HTC、MOTO、DELL、Samsung. Android在中国 运营商支持: 中国移动OPhone、中国联通UniPlus 国产手机厂商新选择 山寨的力量:价格优势1k 1.5k 开发工具:开源Eclipse IDE,SDK 开发机OS Windows/Mac OSX (Intel)/Linux (i386) 框
12、架:Java SE 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 谷歌Android 优势 源代码完全开放 应用丰富 开发门槛低,强 大社区支持 劣势 Java阵营、厂商 版本分裂! 开发者不容易赚 钱 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 Web OS 互联网操作系统,最新型的嵌入式操作系统 基于网络(Web)的操作系统 Web operating system 或者Web-based Operating System 内涵 运行在浏览器中的虚拟OS,是基于Web的服务的开放式集合 提供了WebOS API,能够根据WebOS API进行编程
13、能够在WebOS中打开应用程序 外延 用户通过浏览器运行基于Web的在线应用 能实现PC操作系统上的各种操作 程序语言以PHP, XML, JS等Web语言为主,尽可能消灭高级语言 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 Web OS 优势 基于Web的标准化程度高,不同程序和服务方便对接, 免下载,免受病毒木马的骚扰 免安装,免去维护,对硬件的要求低 软件的扩展性好,无缝升级 解决盗版/收费难问题 终端随意选择 :不同浏览器、不同的OS运行程序 劣势 执行效率低 网络依赖,带宽瓶颈 开发难度大:js调试困难 隐私问题:操作在网上,数据在服务器上 2020年8月6日星
14、期四 郑贵锋 博士 2020年8月6日星期四 移动应用特点移动应用特点 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 移动 vs 非移动 Mashup能力 整合不同服务创造新应用 例如:相机+GPS 位置自动显示在照片上 触摸屏:手指 vs. 鼠标! 鼠标右键怎么实现?长按! 优势:自然; 多个手指!手势! 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 移动应用五要点 2020年8月6日星期四 郑贵锋 博士 2020年8月6日星期四 #2 Android平台概述 郑贵锋 博士 课程目标: 了解智能手机开发现状、Android平台体系结构和应用程序 模型,
15、覆盖了以下几个主要技术应用。 课程简介 手机应用 基础 基本概念基本概念 系统架构系统架构 基础部分 开发环境搭开发环境搭 建建 程序设计基程序设计基 础础 界面开发界面开发 网络开发网络开发 数据存储数据存储 高 级 桌面部件桌面部件 多任务多任务 媒体播放媒体播放 传感器传感器 GPS定位定位 郑贵锋 博士 2020年8月6日星期四 Android:读音ndrid,外表像人的机器 一个开放的操作系统,软件平台 Android 软件系列包括操作系统、中间件和一些关键应用。 Android是基于JAVA的系统,运行在 Linux 2.6核上。 Android SDK 提供为开发者提供必要的工具
16、与API。 Android= 一家公司,Google 2005年并购 Android操作系统最初由安迪鲁宾(Andy Rubin)创办 Google收购后将其开源,开发者拥有了一个完全开放的手机平台。 Android平台概述 郑贵锋 博士 2020年8月6日星期四 发展了Android的联盟 - OHA 电信运营商 半导体生产商 手机生产制造商 软件开发公司 由OHA开发的Android,是第一个完整的、开放的、免费的 智能移动开发平台。 开放手机联盟OHA 郑贵锋 博士 2020年8月6日星期四 开放手机联盟OHA 郑贵锋 博士 2020年8月6日星期四 Android的代号序列会按甜点名字
17、中首个英文字母(C、D、E、F)的排列顺序 Android发展历史 郑贵锋 博士 2020年8月6日星期四 3.2 Honeycomb(蜂巢) 2011年7月13日发布,版本更新如下: 支持7英寸设备 引入了应用显示缩放功能 Android 4.0 Ice Cream Sandwich 2011年10月19日 在香港发布, 全新的UI 全新的Chrome Lite浏览器,有离线阅读,16标签页,隐身浏览模 式等。 Android 新版本 2020年8月6日星期四 郑贵锋 博士 Android 智能手机 2020年8月6日星期四 郑贵锋 博士 Motorola Cliq HTC G1 HTC H
18、ero Samsung i7500 Samsung Moment Motorola Droid HTC Magic HTC Tattoo Sony X10 Android 嵌入式设备 2020年8月6日星期四 郑贵锋 博士 Ebook Reader MID 数码相框数码相框 微波炉微波炉 洗衣机洗衣机 etcetc 2010年5月19日发布,百万个电视台 硬件 英特尔的Atom CE4100 SoC(2009年发布的产品) 支持 1080p 影片播放、Blu-ray 支持 MPEG-4、3D绘图 Sony的电视机 罗技的遥控器 软件 Android 2.1 支持Flash 10.1 支持And
19、roid market的软件 与gPhone互动 Android手机当遥控器来操作Google TV 手机上正在看的东西,可以丢到google TV上播放 谷歌TV 2020年8月6日星期四 郑贵锋 博士 Google 网络服务 2020年8月6日星期四 郑贵锋 博士 社交网络 网络相册Web Album 网盘Web Storage 云服务Cloud Computing Service 其他网络服务 2020年8月6日星期四 郑贵锋 博士 Android应用 Compass Google Sky MAP phonalyzr 郑贵锋 博士 2020年8月6日星期四 Android应用 Buddy
20、Runner 郑贵锋 博士 2020年8月6日星期四 基于Linux核心的操作系统 源代码开放 免授权费,易于推出中低价智能型手机 与Google服务紧密结合 完整度高的架构,友善的开发环境 虚拟机技术-应用程序开发者不需考虑硬件 细节 Android 的特点 2020年8月6日星期四 郑贵锋 博士 应用框架可重用,组件可以更换。 Dalvik虚拟机针对移动设备进行了优化。 优化的图形能力支持2D、3D图形(OpenGL ES 1.0 )。 集成了基于开源WebKit引掣的浏览器。 支持SQLite轻量级数据库。 Android 的特点(续) 2020年8月6日星期四 郑贵锋 博士 多媒体支持
21、多种音频、视频格式。 GSM Telephony (hardware dependent) 支持蓝牙Bluetooth,3G和Wi-Fi 支持照相机、GPS、指南针和加速度仪等传 感器硬件。 完备的开发环境。包括模拟机、调试工具、 内存运行检测,以及为Eclipse IDE所写的插 件。 Android 的特点(续) 2020年8月6日星期四 郑贵锋 博士 源代码完全开放,便于开发人员把握实现细节,便于提高开发 人员的技术水平,有利于开发出更具差异性的应用。 采用了对有限内存、电池和CPU 优化过的虚拟机Dalvik, Android 的运行速度比想象的要快很多。 运营商(中国移动等)的大力支
22、持,产业链条的热捧。 良好的盈利模式(3/7 开),产业链条的各方:运营商、制造 商、独立软件生产商都可获益。将移动终端的评价标准从硬件 向软件转变,极大的激发了软件开发者的热情。 源代码遵循Apache V2 软件许可(允许代码修改,再发布(作为 开源或商业软件),而非GPL 许可(不允许修改后代码做为 闭源的商业软件发布和销售)。有利于商业开发。 具有强大的Linux 社区的支持。 Android的优势 2020年8月6日星期四 郑贵锋 博士 Google 提供了一套Java 核心包(J2SE 5,J2SE 6)的有限子集, 尚不承诺遵守Java 任何Java 规范, 造成Java阵营的进
23、一步分 裂。 厂商版本分裂,对已有手机硬件不支持新版本Android系统 立即升级。 现有应用完善度不太够,需要的开发工作量较大。 Android的不足 郑贵锋 博士 2020年8月6日星期四 Android SDK所支持的操作系统: Windows XP (32-bit) 、Vista (32- or 64-bit)、Windows 7 Mac OS X 10.4.8 or later (x86 only) Linux (tested on Linux Ubuntu Dapper Drake) Android SDK命名规则 Android-sdk-主机系统主机系统_体系结构体系结构_版本版
24、本 android-sdk-windows-1.5_r2.zip android-sdk-linux-x86-1.5_r2.zip 系统环境 郑贵锋 博士 2020年8月6日星期四 三个层次 移植开发移动电话系统移动电话、数码产品 Linux相关设备驱动程序接口; Android本地框架中的硬件抽象层; 硬件系统构建 Android系统开发Android OS 完善Android系统本身功能,增加系统功能 修正系统缺陷 Android应用程序开发Android应用程序 基于现有硬件,基于Android框架 Android的开发层次 2020年8月6日星期四 郑贵锋 博士 Android系统4层
25、架构 4、应用层、应用层 3、应用框架层、应用框架层 2、系统运行库层、系统运行库层 本地框架和Java运行环境 1、Linux内核层内核层 操作系统内核及驱动 郑贵锋 博士 2020年8月6日星期四 以Java为编程语言 一个 Activity 类的实例负责建立显示窗口,以前台 模式运行 后台运行的程序叫做Service 前台运行中的 Activity全部画面被其他 Activity 取 代时,该 Activity 便被停止(stopped),甚至被 系统清除(kill)。 Android应用层 2020年8月6日星期四 郑贵锋 博士 应用层应用层 Activity manager管理运行应
26、用程序 Content Provider在各应用之间共享数据 Resource Manager管理非代码资源 Notification Manager显示用户提示和状态栏 Views System可扩展显示窗口,可构建UI 应用框架层 2020年8月6日星期四 郑贵锋 博士 核心应用:例如联系人,电子邮件,电话,浏览器,日历, 地图, . 充分访问所有核心应用框架API 简化组件的重用 用Java 编写应用程序 应用和框架 2020年8月6日星期四 郑贵锋 博士 C/C+库:被各种Android 组件使用,通过应 用程序框架开发者可以使用。 媒体库:MPEG4 H.264 MP3 JPG PN
27、G . WebKit/LibWebCore:Web 浏览引擎 SQLite 关系数据库引擎 2D,3D 图形库、引擎 系统库 2020年8月6日星期四 郑贵锋 博士 WebKit 基于开源WebKit的浏览器 支持CSS、Javascript、DOM、Ajax 多媒体框架 基于PacketVideo OpenCORE平台 支持标准音频、视频 SQLite 轻型数据库,支持多种平台 系统库 2020年8月6日星期四 郑贵锋 博士 硬件虚拟层 User space C/C+ library layer 硬件接口驱动 使Android平台逻辑与硬件接口分离 硬件抽象层 2020年8月6日星期四 郑贵
28、锋 博士 应用开发语言:Java Dalvik虚拟机 指令 : Dalvik Excutable Java标准库 把java代码编译为Dalvik可执行文件(dex format) Andoid Runtime 2020年8月6日星期四 郑贵锋 博士 Android 基于Linux内核,但不是完整的Linux 内核提供系统核心服务,如进程、内存、 电源管理,网络连接,驱动与安全等。 并不包括全部的Linux。 Linux Kernel 2020年8月6日星期四 郑贵锋 博士 Linux 内核是位于硬件和软件堆之间的抽象 层 核心服务:安全机制、内存管理、进程管理、 网络、硬件驱动。 内核扮演的
29、是硬件层和系统其它层次之间的一 个抽象层的角色。 操作系统的初始化、编程接口与标准的Linux 系 统有所不同的。 Android内核 2020年8月6日星期四 郑贵锋 博士 核心库提供基本的Java 函数,Dalvik 虚拟机 依赖于Linux 内核 可同时运行多个Dalvik 虚拟机 每一个Android 应用程序在它自己的Dalvik VM 实例中运行,VM 执行优化的Dalvik 可 执行文件(.dex) Dx-工具可把编译过的Java 文件转换为dex 文件 运行环境 2020年8月6日星期四 郑贵锋 博士 DVM Dalvik 虚拟机是Google等厂商合作开发的Android移
30、动设备平台的核心组成部分之一。可以支持已转换 为.dex(即Dalvik Executable)格式的Java应用程序 的运行,.dex格式是专为Dalvik设计的一种压缩格 式,适合内存和处理器速度有限的系统。(dx 是 一套工具,可以将 Java .class 转换成 .dex 格式. 一 个dex档通常会有多个.class。由于dex有时必须进行 最佳化,会使文件大小增加1-4倍,以ODEX结尾。) JVM Sun Java bytecode DVM vs JVM 2020年8月6日星期四 郑贵锋 博士 Dalvik 和标准 Java 虚拟机(JVM)首要差别 Dalvik 基于寄存器,
31、而 JVM 基于栈。基于寄存 器的虚拟机对于更大的程序来说,在它们编译 的时候,花费的时间更短。 Dalvik 和 Java 运行环境的区别 Dalvik 经过优化,允许在有限的内存中同时运 行多个虚拟机的实例,并且每一个Dalvik 应用 作为一个独立的Linux 进程执行。独立的进程可 以防止在虚拟机崩溃的时候所有程序都被关闭。 DVM vs JVM 2020年8月6日星期四 郑贵锋 博士 SDK下载/安装 快速入门 样例程序 其他资源 获取Android资料的途径 2020年8月6日星期四 郑贵锋 博士 Questions? #3 手机应用开发入门 郑贵锋 博士 刘宁 Email: 课程
32、目标 Android 开发准备工作 开发包及工具安装 创建HelloWorld Android程序设计基础 课程简介 2020年8月6日星期四 郑贵锋 博士 市场分额不断扩大 用户越来越多,开发的应用可迅速传播 易于开发功能强大的应用 在Android Market上发布应用不需要认证过程 Android开放源码平台优势 最容易上手 为什么学习Android开发 2020年8月6日星期四 郑贵锋 博士 兼容性好,支持各种屏幕大小、硬件组合 Camera Compass GPS等 Mashup能力 整合不同服务创造新应用 例如:相机+GPS 位置自动显示在照片上 为什么学习Android开发(续
33、) 2020年8月6日星期四 郑贵锋 博士 JAVA Android编程语言 XML 应用配置与界面定义 Android编程基础:两种语言 2020年8月6日星期四 郑贵锋 博士 Activities (活动) Intents(意图?) 没有鼠标光标的操作(触摸屏) 视图与控件(界面元素) 异步调用(多线程支持) 后台服务 Android开发基本概念 2020年8月6日星期四 郑贵锋 博士 Android应用由一个或多个Activities组成 Activitie是一个容器,装着你的UI,以及运行UI 的代码 相当于Windows程序的一个窗口 Activities (活动) 2020年8月6
34、日星期四 郑贵锋 博士 用于构成Android的核心消息系统 包含要执行的动作(例如:查看、编辑、拨号 等)及相关数据(例如:一条联系人信息) 用于启动Activity,Android各部件之间通信 用户应用可以广播Intents,也可以接收Intents Intents(意图) 2020年8月6日星期四 郑贵锋 博士 当广播一个Intent的时候,其实就是告诉 Android系统有事情发生了 可以告诉当前应用新建一个窗口(Activity) 也可以让Android启动另外一个应用 使用Intents发送消息 2020年8月6日星期四 郑贵锋 博士 必须注册Intent接收器,以监听Inten
35、t消息,然后处理之: 新建窗口,打开其他应用或者其他动作 一个Intent消息可以被多个接收器 接收,此时Android系统将弹出选 择窗口 注意:如果Android没有找到匹配的 接收器,发送Intent的应用将会崩溃! 注册Intent接收器 郑贵锋 博士 2020年8月6日星期四 手指 vs. 鼠标! 劣势 鼠标右键怎么实现?长按! 不够精确?应用设计 优势 自然 多个手指! 支持手势! 触摸屏操作 2020年8月6日星期四 郑贵锋 博士 视图(Views) 基本的界面元素 屏幕中的一块矩形区域 可响应画图和事件处理 例如:菜单元素 控件(Widgets) 高级界面元素 例如:按钮、多选
36、框等等 视图与控件(界面元素) 2020年8月6日星期四 郑贵锋 博士 Android提供了AsyncTask类 可很简单的实现多任务 不需要自行回收多线程资源 而且调用者很容易获得线程运行结果 这是一个很简洁、清晰的异步编程模型 耗时操作不使用异步调用的后果 ANR(应用程序无响应) 异步调用 2020年8月6日星期四 郑贵锋 博士 类似Windows系统的服务:没有界面的运行 方式 例如:Android系统里音乐播放器通常提供 后台服务的运行方式 可以边收邮件边听歌 后台服务 2020年8月6日星期四 郑贵锋 博士 Android设备会告诉你: Where am I? Which way
37、am I walking? Is my phone facing up or down? Is my phone moving? Can I use my Bluetooth headphones? How do I record video? GPS,罗盘,距离传感器,加速计,蓝牙,相 机等 Android提供的硬件工具 2020年8月6日星期四 郑贵锋 博士 Internet:WebOS? 音视频支持: 各种格式 联系人: 可自由访问,与其他应用组合 安全:安装应用时有权限提示 Google APIs: 支持位置与导航 Android提供的软件工具 2020年8月6日星期四 郑贵锋 博士
38、我们对Android 有了较全面的了解 之后 郑贵锋 博士 KISS:Keep It Simple, Stupid 在没有理解内建API之前,不要一头栽进去 写代码! 先看文档!不用记住,但一定要看! 写N行代码=一句API调用! 不要增加不需要的功能! 使用内建控件就可以完成任何事情 开发前要记住的原则 2020年8月6日星期四 郑贵锋 博士 Java SDK va/javase/downloads/index.html Android集成开发环境 Eclipse Eclipse plug-in: Android Development Tools (ADT) 最新Android SDK 绿
39、色,解压即用 设置环境变量ANDROID_SDK_HOME到解 压目录 开发环境 2020年8月6日星期四 郑贵锋 博士 The IDE(Eclipse) for Android 2020年8月6日星期四 郑贵锋 博士 The IDE(Eclipse) for Android 2020年8月6日星期四 郑贵锋 博士 模拟器 2020年8月6日星期四 郑贵锋 博士 模拟器运行Hello World 2020年8月6日星期四 郑贵锋 博士 Android SDK的内容 2020年8月6日星期四 郑贵锋 博士 Google Map的API 相关技术文档 SDK附带的样例程序 SDK提供的工具 And
40、roid模拟器(Android Emulator) 集成开发环境插件(ADT) 调试监视服务(Dalvik Debug Monitor Service) Android 调试桥(Android Debug Bridge) Android资源打包工具(aapt.exe) Android虚拟设备(Android Virtual Devices) Android SDK提供的工具 2020年8月6日星期四 郑贵锋 博士 ADT: Android Development Tool, an Eclipe plugin Two debuggers adb: Android Debug Bridge ddm
41、s: Dalvik Debug Monitor Server aapk: Android Application package tool All resources are bundled into an archive, called apk file. dx: java byte code to Dalvik executable translator Android emulator: QEMU Android SDK提供的工具 2020年8月6日星期四 郑贵锋 博士 Java javac .Class dex .aapk .apk Adb run Java文件:应用程序源文件 and
42、roid 本身相当一部分都是用java 编写而成 android 的应用使用java 来开发。 Class文件:Java编译后的目标文件 Google使用Dalvik 来运行应用程序 Android的class 文件是编译过程中的中间目标文 件,需要链接成dex 文件才能在Dalvik 上运行。 Android的相关文件类型 2020年8月6日星期四 郑贵锋 博士 Dex文件:Android平台上的可执行文件 Android 虚拟机Dalvik 支持的字节码文件格式。 这种虚拟机执行的并非Java 字节码,而是另一 种字节码:dex 格式的字节码。 在编译Java 代码之后,通过Android
43、 平台上的工 具可以将Java 字节码转换成Dex 字节码。 Dalvik VM 针对手机程序与CPU进行过优化,可 以同时执行许多VM 而不会占用太多资源。 Dex文件 2020年8月6日星期四 郑贵锋 博士 Apk文件: Android上的安装文件 Apk 是Android 安装包的扩展名,一个Android 安装包包含了与该Android 应用程序相关的所有 文件。 apk文件将AndroidManifest.xml文件、应用程序代码 (.dex 文件)、资源文件和其他文件打成一个压缩包。 一个工程打包成一个.apk文件。 apk 文件的本质是一个zip包。(可以理解为后缀 名修改为.a
44、pk) Apk文件 2020年8月6日星期四 郑贵锋 博士 可以先试试可以先试试SDK的例子程序的例子程序 郑贵锋 博士 新建新建ANDROID项目项目(PROJECT) Project Name :工程名, 在计算机中存 储工程的目录的名字; Application Name :应用名,应用程序 的名称;最终显示在模拟器上。 Package Name :包名,见Java相关概念 Activity Name - UI界面窗口的类名, 从Activity继承而来 ;Activity是一个应 用程序的基础,通常是Android Activity 的子类。 Min SDK Version :最低SD
45、K版本,如果写 2的话,就代表包括1.1 和1.1以上版本的 SDK都能运行,写3的话1.1的平台就不能 运行了,最终体现在xml申明文件里。 Android项目的相关概念 2020年8月6日星期四 郑贵锋 博士 package好比java用来组织文件的一种虚拟文 件系统。 package把源代码.java文件,.class文件和其 他文件有条理的进行一个组织,以供java来 使用。 package是将文件组织在一颗类似unix, linux文件系统的树结构里面,它有一个根 /,然后从根开始有目录和文件,目录中 也还有文件和目录。 Package是什么? 2020年8月6日星期四 郑贵锋 博士
46、 Android应用工程文件组成(1) Android Library 运行Android库(本项目使用的是Android1.6的库) Asserts目录 主要放置多媒体等一些文件; Res目录 主要放置应用用到的资源文件,分三个目录存 放,当目录中的资源文件发生变化时,R文件就 会自动发生变化。 Drawable目录-主要放置图片资源 Layout目录-主要放置用到的布局文件 Values目录-主要放置字符串(strings.xml)、 颜色(color.xml)、数组(array.xml) AndroidManifest.xml文件 非常重要,相当于应用的配置文件,声明 应用的名称、应用所用到的Activity、 Service和receiver等 2020年8月6日星期四 郑贵锋 博士 gen目录下的R.java:对将要用到的资源进行全局索引 自动生成,只读模式,由Eclipse自动来处理 Res文件夹中发生任何变化,R.Java都会重新生成 public final class R public static final class string public static final int app_name=0 x7f040001; Android应用工程文件组成(2) 2020年8月6日星期四 郑贵锋 博士 声