目
录
第1章嵌入式与移动开发概述…………………………………………………………… 1
1.1嵌入式与移动系统 ………………………………………………………………… 1
1.1.1漫谈嵌入式与移动系统 ……………………………………………………… 1
1.1.2嵌入式和移动系统的定义 …………………………………………………… 7
1.1.3嵌入式系统的特点 …………………………………………………………… 8
1.2嵌入式与移动系统的典型结构…………………………………………………… 10
1.2.1典型硬件结构………………………………………………………………… 10
1.2.2典型软件结构………………………………………………………………… 17
1.3移动操作系统……………………………………………………………………… 19
1.4嵌入式与移动应用开发…………………………………………………………… 23
1.5嵌入式与移动应用开发的特殊困难……………………………………………… 24
第2章英特尔嵌入式与移动硬件平台 ………………………………………………… 26
2.1英特尔凌动处理器………………………………………………………………… 26
2.1.1凌动处理器架构……………………………………………………………… 26
2.1.2凌动处理器特点……………………………………………………………… 28
2.2英特尔嵌入式芯片组……………………………………………………………… 31
2.3英特尔 SoC ……………………………………………………………………… 33
2.3.1 OakTrail …………………………………………………………………… 33
2.3.2 PineTrail…………………………………………………………………… 34
2.3.3 CedarTrail ………………………………………………………………… 35
2.3.4 Medfield……………………………………………………………………… 35
2.4英特尔嵌入式系统参考平台……………………………………………………… 36
2.4.1上网本、上网机 ……………………………………………………………… 36
2.4.2移动互联网设备……………………………………………………………… 38
2.4.3智能手机……………………………………………………………………… 38
2.4.4平板电脑……………………………………………………………………… 41
2.4.5联网电视与机顶盒…………………………………………………………… 41
2.4.6媒体电话……………………………………………………………………… 42
2.4.7车载娱乐信息系统…………………………………………………………… 43
2.4.8其他应用平台和领域………………………………………………………… 43
第3章英特尔 Android应用开发流程和工具链 ……………………………………… 46
3.1嵌入式应用开发流程……………………………………………………………… 46
3.1
.1嵌入式应用开发环境 ………………………………………………………… 46
3.1
.2嵌入式应用开发流程 ………………………………………………………… 49
3.1
.3嵌入式系统调试与仿真 ……………………………………………………… 52
3.2
典型的开发工具链 ………………………………………………………………… 57
3.3英特尔
Android应用开发工具链的概述、安装与配置 ………………………… 60
3.3.1英特尔
Android应用开发工具链的概述 ………………………………… 60
3.3.2宿主机
Android开发工具的安装 ………………………………………… 67
3.3
.3实际机环境安装 ……………………………………………………………… 83
3.3
.4宿主机与目标机的交互 ……………………………………………………… 85
3.4
Android开发工具的使用 ………………………………………………………… 85
3.4.1开发
Android应用 ………………………………………………………… 85
3.4.2调试
Android应用 ………………………………………………………… 98
3.5模拟器加速
……………………………………………………………………… 106
3.6
Atom应用开发的英特尔辅助工具 …………………………………………… 108
3.6.1 IntelCCompiler/IntelC++Compiler………………………………… 109
3.6.2 VTune……………………………………………………………………… 110
3.6.3英特尔性能库 ……………………………………………………………… 111
第4章 Android操作系统 ……………………………………………………………… 113
4.1
Android简介 …………………………………………………………………… 113
4.2
Android的体系结构与模块 …………………………………………………… 115
4.3开发者的
Android使用 ………………………………………………………… 118
4.3
.1通用使用经验 ……………………………………………………………… 118
4.3
.2实际机使用例子 ———联想 K800的使用 ………………………………… 124
4.4
Android开发工具及辅助工具的使用 ………………………………………… 128
4.4
.1模拟器使用 ………………………………………………………………… 128
4.4
.2帮助文档使用 ……………………………………………………………… 131
4.4.3
DDMS使用 ………………………………………………………………… 137
4.4.4
adb使用 …………………………………………………………………… 148
4.4.5
Android命令使用 ………………………………………………………… 153
4.4.6
Telnet仿真器远程登录 …………………………………………………… 156
4.4.7
Eclipse使用补充 …………………………………………………………… 159
4.5
Android的 Linux常用命令使用与操作 ……………………………………… 164
4.6
应用在目标机上的文件结构 …………………………………………………… 174
4.7
应用的命令行启动 ……………………………………………………………… 176
第5章 Android的定制与安装 ………………………………………………………… 178
5.1
嵌入式操作系统裁剪与定制 …………………………………………………… 178
5.2
Android的定制 ………………………………………………………………… 179
5.2.Ig…………………………………………………… 179
1 ROM包/映像(mae)
5.2.2
Android的映像定制概述 ………………………………………………… 181
5.2.3
Android的映像定制例子 ………………………………………………… 182
5.3 Android映像的安装/刷机 ……………………………………………………… 184
5.3
.1映像安装概述 ……………………………………………………………… 184
5.3
.2映像安装例子 ……………………………………………………………… 185
第6章 Android应用图形用户界面设计 ……………………………………………… 187
6.1
嵌入式应用图形用户界面概述 ………………………………………………… 187
6.1.1
Android设备交互模态的特点 …………………………………………… 187
6.1.2嵌入式
UI和 UE设计原则 ……………………………………………… 192
6.2
Android应用程序概述 ………………………………………………………… 197
6.2
.1应用项目的文件组成 ……………………………………………………… 197
6.2
.2应用的组成结构 …………………………………………………………… 208
6.2.3
Android虚拟机 …………………………………………………………… 210
6.3
AndroidGUI基础知识 ………………………………………………………… 211
6.3.1
Activity的状态转换 ……………………………………………………… 211
6.3.2
Context类 ………………………………………………………………… 214
6.3.3
Intent介绍 ………………………………………………………………… 217
6.3.4
Application、Activity的关系 ……………………………………………… 220
6.4
Android基础界面应用 ………………………………………………………… 220
6.4.1
GuiExam空应用代码分析 ………………………………………………… 220
6.4.2
But
on与事件 ……………………………………………………………… 228
6.4.3
TextView、But
on与 EditText窗口部件 ………………………………… 234
6.4.4
ImageView的使用 ………………………………………………………… 236
6.4
.5活动与应用的退出 ………………………………………………………… 239
6.5
多活动界面应用 ………………………………………………………………… 242
6.5
.1触发显式匹配不带参数的同一应用的活动 ……………………………… 242
6.5
.2触发显式匹配带参数的不同应用中的活动 ……………………………… 250
6.5
.3隐式匹配使用系统自带的活动 …………………………………………… 258
6.5
.4隐式匹配使用自定义的活动 ……………………………………………… 261
6.6
自绘图形与触摸屏输入 ………………………………………………………… 267
6.6
.1显示输出框架 ……………………………………………………………… 267
6.6
.2响应触屏输入的绘图框架 ………………………………………………… 271
6.6
.3多点触摸代码框架 ………………………………………………………… 274
6.7键盘输入响应
…………………………………………………………………… 278
6.8对话框使用
……………………………………………………………………… 282
6.9
应用属性的设置 ………………………………………………………………… 287
第7章应用的性能优化 ………………………………………………………………… 292
7.1性能优化概述 …………………………………………………………………… 292
7.1
.1性能优化的原则、原理 ……………………………………………………… 292
7.1
.2性能优化的方法类型 ……………………………………………………… 294
7.1
.3性能优化的实现途径 ……………………………………………………… 294
7.2 IntelVTune …………………………………………………………………… 296
7.3 IntelGPA ……………………………………………………………………… 302
7.3.1
IntelGPA简介 …………………………………………………………… 302
7.3.2
GPA的安装 ………………………………………………………………… 304
7.3.3
GPA在 Android中的使用例子 …………………………………………… 307
7.4
Android多线程设计 …………………………………………………………… 314
7.4.1
Android线程使用框架 …………………………………………………… 315
7.4.2线程同步
…………………………………………………………………… 324
7.4
.3线程间通信 ………………………………………………………………… 326
7.4.4
Atom多线程优化的原则 ………………………………………………… 328
7.5
GPA辅助、多线程优化 Android应用例子 …………………………………… 329
7.5
.1原始应用与 GPA分析 …………………………………………………… 329
7.5
.2优化的应用与 GPA分析 ………………………………………………… 336
第8章 NDK与 C/C++优化 ………………………………………………………… 344
8.1
JNI与 NDK概述 ……………………………………………………………… 344
8.1.1
JNI基础知识 ……………………………………………………………… 344
8.1.2
NDK基础知识 ……………………………………………………………… 348
8.2
NDK安装 ………………………………………………………………………… 351
8.3
NDK使用例子 …………………………………………………………………… 366
8.3
.1命令行生成库文件的方式 ………………………………………………… 366
8.3.2
IDE中生成库文件的方式 ………………………………………………… 373
8.3.3
NDK应用开发的工作过程分析 …………………………………………… 377
8.4
NDK编译优化 …………………………………………………………………… 380
8.5利用英特尔
IPP的优化 ………………………………………………………… 386
8.6
NDK综合优化例子 ……………………………………………………………… 386
8.6.1
C/C++加速的原始应用 ………………………………………………… 387
8.6
.2编译优化的扩展应用 ……………………………………………………… 394
8.6
.3编译优化的扩展应用多种情况的比较 …………………………………… 399
第9章应用的低功耗设计 ……………………………………………………………… 401
9.1
低功耗设计概述 ………………………………………………………………… 401
9.1
.1功耗的基础知识 …………………………………………………………… 401
9.1
.2功耗控制技术 ……………………………………………………………… 402
9.2
Linux功耗控制机制 …………………………………………………………… 408
9.3
Intel功耗优化辅助工具 ………………………………………………………… 410
9.4
应用程序设计的低功耗考虑 …………………………………………………… 412
9.5
GPA辅助、功耗优化 Android应用例子 ……………………………………… 415
9.5
.1原始应用及 GPA功耗分析 ……………………………………………… 415
9.5
.2优化应用一及 GPA功耗分析 …………………………………………… 420
9.5
.3优化应用二及 GPA功耗分析 …………………………………………… 424
我们将本教材分成 9个章节来予以介绍。第1章,嵌入式与移动开发概述。本章介绍嵌入式和移动开发的基础和概要的知识 ,让读者对嵌入式和移动开发的内容、用途、意义和定位有一个整体和全面的把握。
第2章,英特尔嵌入式与移动硬件平台。本章介绍采用 Atom处理器的英特尔嵌入式和移动设备的硬件知识 ,重点突出 Atom处理器性能特点及其实现机制 ,为后续的性能优化与低功耗优化介绍打下硬件方面的基础。
第3章,英特尔 Android应用开发流程和工具链。本章介绍 Atom设备平台 Android应用开发工具、环境搭建、使用等知识 ,以及 Intel为 Android应用开发提供的额外的辅助工具。
第4章,Android操作系统。本章从开发者、程序员的角度介绍 Android,特别是采用 Atom处理器的 Android设备 ,及其应用开发工具的使用知识。第5章,Android的定制与安装。本章在介绍操作系统定制与裁剪的公共知识后 ,介绍 Android的定制、映像安装的知识 ,并结合实例来予以说明。
第6章,Android应用图形用户界面设计。本章在介绍完 Android图形用户界面设计原则与方法等公共知识后 ,重点介绍了 Android应用开发的基本思路。对 Android应用开发 ,我们从简到繁 ,模块式地 ,一步步结合例子来介绍。通过本章的学习 ,读者基本掌握了编写、开发 Android应用的能力。当然 Android的应用开发知识博大精深 ,我们浓缩在一章中 ,不可能事无巨细 ,面面俱到地予以讲解。因此我们重点讲授了后续性能和低功耗优化章节的应用所涉及到的基础开发知识 ,如按钮等基础窗口部件的使用、多活动界面、自绘图形与触摸屏输入、键盘输入、对话框、应用属性设置等开发知识。而一般 An-droid书上重点讲述的电话、短信、导航、多媒体等功能的实现 ,在本章乃至本教材都予以略过。
第7章,应用的性能优化 ,这是 Intel平台应用开发的特色之一。本章在介绍完应用软件优化的基础理论和原则后,介绍了Intel性能优化工具和基于 Atom处理器的软件优化方法,并结合例子来说明基于 Atom处理器的软件在Java语言级上的优化方法。
第8章,NDK与 C/C++优化,这是对上一章知识的延伸和专门化。本章重点介绍采用 C/C++模块的 Android应用在 C/C++语言级别上的优化方法,其中基础框架 JNI和支撑工具 NDK的知识在该章的最前面一并进行了介绍。
第9章,应用的低功耗设计,这是Intel平台应用开发的另一大特色。本章介绍完低功耗优化设计的基础知识和原则后,结合例子介绍了借助Intel工具对 Android应用进行低功耗优化的具体方法。
本教材使用的例子和环境说明
本教材的例子几乎都基于英特尔凌动架构,采用 AndroidSDK4.0.3以上版本,所有的例子都在 Android虚拟机和联想 K800、摩托罗拉 MT788实际机上测试通过,部分例子还在智能电视上测试通过。开发用的宿主机是 x86架构 PC,操作系统为 Windows。
本教材的书写约定
字体 含义 示例
宋体 本教材正文 由于资源受限的特点……
灰色底纹字体 表示 Android或 Windows中运行的命令,其中前导字符串 #、 $、C:…>等不属于命令或者表示函数原型、类的继承关系、编译运行错误等内容 #ls-l C:\DocumentsandSet
ings\hlgu>adbshel
voidActivity.startActivity(Intentintent)java.lang.Object →android.content.Context
带边框字体 表示程序代码或文本文件内容 packagecom.example.guiexam;
带边框灰色底纹字体 表示程序代码或文本文件内容中特殊标记的文字,一般正文部分会对此文字进行说明 importandroid.widget.But
on;
带边框斜条纹底纹字体 表示程序代码中已经删除的文字或者由工具自动生成的代码 //importandroid.util.Log;
本教材适合的读者
本教材可以作为 Android和 Atom嵌入式和移动开发工程师的参考书,也可作为大专院校相关专业的教学参考用书。
感慨与致谢
笔者与Intel(英特尔)的合作已有多年。正是英特尔,特别是英特尔亚太研发中心郎朗先生的鼎力帮助,以及沈海先生、王星宇女士等同仁的大力支持,才给了我这么一个舞台,才让我得到锻炼和表现的机会,对此表示由衷的感谢。
接到编写教材的任务时,时间还是比较紧的,为了让本教材尽快与读者见面,中间不知经历了多少个熬得眼睛发红,无暇洗漱以至于蓬头垢面的日日夜夜。至此将本教材的最后一个标点符号编写、校对完后,掩卷反思,收集资料、与工程师的讨论、编写适合的讲解例子、构思和编写文字内容 ……这过程中的每个环节,还历历在目,恍若昨天,个中滋味,唯我自知。虽然辛苦万分,但是一想到教材的面世,能将自己能力中最有价值的东西, 以清晰、系统的方式呈现在读者面前 ,与读者共享、共勉、共进 ,顿感欣慰。最后以 “痛并快乐着 ”,这么一句很俗气的话 ,来概括自己的心情吧 ,也希望这能成为本教材知识与能力培养以外的 ,给读者带来的一点可共勉的精神收获。
本教材的编辑过程中 ,得到了英特尔亚太研发中心张亮、周振、杨贝等工程师对本教材工作的悉心指点与热心帮助 ,在此对他们的帮助和指导表示诚挚的感谢。
由于时间仓促 ,作者水平有限 ,教材中的缺点和不足之处在所难免 ,敬请读者批评指正。