第1章 构建第一个AIR应用 1
1.1 如何构建AIR应用 1
1.1.1 用AIR和Flex构建Hello World应用 1
1.1.2 用AIR和HTML构建Hello World应用 2
1.1.3 利用应用描述文件来描述应用 3
1.1.4 测试应用 7
1.1.5 调试应用 8
1.2 打包应用完成部署 8
1.2.1 使用AIR开发工具(ADT)打包应用 8
1.2.2 使用Flex Builder打包应用 9
1.3 下一步工作 10
第2章 时间跟踪应用 11
2.1 初识dpTimeTracker 11
2.1.1 下载dpTimeTracker代码 11
2.1.2 导入项目 12
2.1.3 使用应用 12
2.2 使用Flex Builder调试工具 15
2.2.1 断点 15
2.2.2 trace语句 16
2.3 理解应用框架 17
2.4 下一步工作 18
第3章 与剪贴板交互 19
3.1 集成操作系统 19
3.2 分析Clipboard类 19
3.2.1 了解剪贴板数据格式 20
3.2.2 创建定制格式 22
3.2.3 了解剪贴板传输模式 24
3.2.4 了解数据串行化 24
3.2.5 延迟呈现 26
3.3 分析dpTimeTracker如何使用剪贴板 26
3.4 下一步工作 30
第4章 在OS与AIR之间实现拖放 31
4.1 应用中的拖放(DragManager类) 31
4.2 在OS和应用之间完成拖放(NativeDragManager) 40
4.3 将元素从OS拖放到AIR应用 40
4.4 将元素拖入dpTimeTracker应用 43
4.5 从AIR应用向OS拖动元素 43
4.6 将元素拖入OS 47
4.7 下一步工作 49
第5章 读写SQLite数据库 50
5.1 SQLite简介 50
5.1.1 SQLite特性 50
5.1.2 数据类型 51
5.1.3 限制 52
5.2 从AIR访问SQLite 52
5.2.1 同步或异步通信 52
5.2.2 打开和创建SQLite数据库 54
5.2.3 执行SQL语句 57
5.2.4 关闭一个数据库连接 60
5.2.5 创建数据库和表 60
5.2.6 从数据库选择数据 66
5.2.7 向数据库插入数据 70
5.2.8 更新和删除数据 74
5.2.9 使用事务 75
5.3 优化数据库性能 80
5.3.1 使用analyze 80
5.3.2 优化SQLStatement 81
5.4 了解dpTimeTracker应用中的数据库访问 81
5.4.1 使用SQL命令 82
5.4.2 SQL命令序列化 85
5.4.3 使用SQL命令插入和更新 87
5.5 下一步工作 90
第6章 与文件系统交互 91
6.1 了解File类 91
6.1.1 引用文件位置 91
6.1.2 与文件内容交互 91
6.1.3 指定文件动作 91
6.2 同步和异步访问文件 92
6.3 访问文件系统信息 92
6.3.1 指定路径 93
6.3.2 确定操作系统特定的行结束符 94
6.3.3 指定文件路径为URL 94
6.3.4 使用特殊目录 95
6.4 使用错误处理 96
6.5 处理目录 96
6.5.1 动作 96
6.5.2 文件和目录事件 103
6.5.3 使用FileStream类 103
6.6 进一步分析File类 108
6.6.1 浏览文件 108
6.6.2 删除文件 109
6.6.3 复制、移动或重命名文件 109
6.6.4 将ActionScript对象写至文件系统 109
6.7 分析dpTimeTracker示例 111
6.7.1 创建Excel文件 111
6.7.2 读SQLite文件 112
6.8 下一步工作 113
第7章 定制应用的外观 114
7.1 了解Flex和AIR API的差别 114
7.1.1 使用样式 114
7.1.2 使用皮肤 119
7.1.3 使用Window API 120
7.2 处理菜单 126
7.2.1 应用和窗口菜单 126
7.2.2 上下文菜单 129
7.2.3 OS菜单 131
7.3 分析dpTimeTracker中的定制 133
7.4 下一步工作 135
第8章 使用Presence API 136
8.1 了解与检测网络的存在 136
8.1.1 检测用户的连接 136
8.1.2 了解URLMonitor 139
8.1.3 了解SocketMonitor 141
8.2 了解和检测用户的存在 143
8.2.1 为什么关心用户的存在 143
8.2.2 跟踪用户的存在 143
8.3 在应用中增加自动更新特性 144
8.4 分析dpTimeTracker中的自动更新特性 147
8.5 下一步工作 153
第9章 在Flex/AIR应用中使用HTML内容 154
9.1 了解WebKit 154
9.1.1 WebKit的AIR扩展 154
9.1.2 WebKit中的JavaScript 160
9.1.3 从JavaScript访问AIR API 160
9.1.4 JavaScript中的ActionScript对象 161
9.1.5 从ActionScript访问JavaScript DOM 162
9.1.6 HTMLLoader 163
9.2 处理事件 163
9.2.1 DOM事件 164
9.2.2 用JavaScript处理事件 164
9.2.3 JavaScript异常 166
9.3 控制HTML内容 166
9.3.1 滚动 166
9.3.2 处理历史列表 166
9.4 使用HTMLHost 167
9.5 在操作系统默认浏览器中打开HTML内容 168
9.6 增加PDF内容 169
9.6.1 检测PDF功能 169
9.6.2 加载PDF文件 170
9.6.3 了解AIR中的PDF限制 170
9.7 分析dpTimeTracker应用中HTML的使用 171
9.8 下一步工作 173
第10章 了解远程数据需求 174
10.1 为什么使用服务器 174
10.1.1 可以使用哪种服务器 174
10.1.2 SOAP 175
10.1.3 REST/XML 176
10.1.4 动作消息格式(AMF) 177
10.1.5 实时消息协议(RTMP) 178
10.1.6 Socket 179
10.2 使用服务器时利用设计模式 180
10.2.1 AsyncToken的作用 181
10.2.2 Service接口的作用 181
10.2.3 桩数据的作用 181
10.2.4 ServiceFactory的作用 182
10.3 dpTimeTracker应用中使用远程数据 186
10.3.1 分析与Harvest的同步 186
10.3.2 分析版本系统 190
10.4 下一步工作 191
第11章 与Adobe BlazeDS通信 192
11.1 BlazeDS的作用 192
11.2 如何得到BlazeDS 193
11.3 BlazeDS体系结构基础 193
11.4 配置文件 195
11.5 远程过程调用 196
11.5.1 配置BlazeDS使用RemoteObject 196
11.5.2 客户中使用目标 198
11.5.3 映射Java和ActionScript类型 201
11.6 发布/订购消息机制 202
11.6.1 配置BlazeDS使用消息机制 203
11.6.2 客户中使用目标 206
11.7 BlazeDS和LiveCycle数据服务 215
11.8 下一步工作 215
第12章 使用Fluint测试AIR应用 216
12.1 测试类型 216
12.2 测试框架 217
12.2.1 了解Fluint 218
12.2.2 安装Fluint 218
12.3 框架术语 219
12.3.1 测试方法 219
12.3.2 测试用例 220
12.3.3 测试套件 221
12.3.4 测试运行工具 221
12.4 创建基本单元测试 222
12.4.1 创建测试用例和方法 222
12.4.2 组织测试目录 224
12.5 创建异步测试 224
12.5.1 实现简单的setUp和tearDown 225
12.5.2 创建一个简单的异步测试方法 225
12.5.3 使用传递数据 228
12.6 创建集成测试 229
12.6.1 创建一个简单的UIComponent测试 229
12.6.2 使用测试序列 232
12.6.3 使用响应者 236
12.7 下一步工作 239
第13章 部署AIR应用 240
13.1 使用数字证书 240
13.2 购买Thawte证书 242
13.3 配置应用选项 243
13.3.1 安装工具文本 243
13.3.2 安装目录和菜单位置 244
13.3.3 文件类型 245
13.3.4 浏览器调用 245
13.3.5 图标 246
13.3.6 综合 246
13.4 AIR应用打包 248
13.4.1 用Flex Builder打包 248
13.4.2 用命令行打包 251
13.4.3 对中间文件签名 252
13.4.4 移植AIR文件 253
13.5 发布AIR应用 253
13.5.1 使用无缝Badge安装 254
13.5.2 定制Badge 255
13.5.3 使用Express安装 256
13.5.4 使用预定制Badge 257
13.6 下一步工作 257
第14章 了解AIR安全性 258
14.1 Web应用和桌面应用安全性差别 258
14.2 AIR安全特性 259
14.3 沙箱 259
14.4 应用沙箱的限制 261
14.4.1 Flex/ActionScript 261
14.4.2 HTML/JavaScript 262
14.5 非应用沙箱的权限 263
14.6 跨沙箱通信 263
14.7 加密库 266
14.8 dpTimeTracker应用中的加密库 267
14.9 最差实践 269
14.9.1 使用输入或动态数据作为参数 269
14.9.2 辜负对AIR包的信任 270
14.10 下一步工作 271
附录A AIR起步 272
附录B 使用AIR 1.1需要考虑的问题 274