Android 高级编程(第4版)(移动开发经典丛书)
1星价
¥68.1
(4.9折)
2星价¥68.1
定价¥139.0
温馨提示: 5折以下图书主要为出版社尾货,大部分为全新(有塑封/无塑封),个别图书品相8-9成新、切口有划线标记、光盘等附件不全详细品相说明>>
图文详情
ISBN:9787302539520
装帧:平装-胶订
册数:暂无
重量:暂无
开本:16开
页数:608
出版时间:2019-11-01
条形码:9787302539520 ; 978-7-302-53952-0
本书特色
自Android首次发布10年来,经过多次修订与扩展,《Android高级编程(第4版)》重磅来袭。其中不仅涵盖开发新手需要学习的基础知识,而且探索了经验丰富的Android开发人员在构建极致用户体验时所必需的高级特性和*佳实践。
《Android高级编程(第4版)》作为实践类书籍,将会深入浅出地解释各种复杂的概念,注重实际操作,让读者对Android开发的各类工具、API和*佳实践有直观的认识,并将新技能转换成实际的用户解决方案。
开发环境更新至Android Studio 3.5/Android 10,作者Reto Meier分享Google Android开发代言人10年+的经验,讲述Android开发的各类工具、API和更佳实践,将新技能转换成实际的用户解决方案。
专业编程人员的*佳 Android读物。
—— l2 若你喜欢通过阅读传统教科书而非YouTube视频或漫画来学习Android技术,本书将是你的理想之选!本书的前几版都是备受读者喜爱的畅销书;这个新版本将质量推进到更高水准,浓墨重彩地描述Android Studio、Kotlin和*新的API,堪称Android知识宝库。本书的编排井井有条,示例详明,紧贴实用,质量一流,是网上技术资料无法比拟的! 精心打磨的匠心之作。
—— barbre 我是一名Java开发人员,以前未开发过Android应用。阅读本书,我就像在森林里呼吸新鲜的空气,一切都是清新的、有趣的。这本大块头书籍并没有多余的文字,充满了真知灼见;示例都是作者精挑细选的,清晰明了。本书是我的案头**,是我的贴心伴侣。
帮助Android编程人员实现抱负的平台。
—— Susie Q.
本书深入讲解Android语言和架构,将帮助Android程序员进入更高的技术境界。本书涵盖Broadcast Receiver、Content Provider、Android设计理念、硬件传感器等主题,讲解每个主题时,都列出示例代码;你只需要稍加修改即可将这些代码用于自己的项目中。如果你有志于在Android领域取得一番成就,强烈推荐你阅读本书! Android开发**宝典!
—— C. Pick 这是Reto和Ian为我们奉献的又一本经典书籍!这本综合性书籍与时俱进,根据*新Android版本做了全面细致的更新。这本大块头书籍中蕴藏着大智慧。Android学习曲线不再陡峭,变得平缓!
我是一名有10年资历的Android开发老兵;仅读了开头几章,就仿若甘露入心,似醍醐灌顶,获益良多。
作者提供的见解十分宝贵,能让你少走很多弯路。强烈向你推荐本书!
讲解清晰透彻,令我茅塞顿开!
—— Andy 本书将复杂的技术讲得简单易懂,将枯燥的技术讲得活灵活现。手捧本书,像在吃美味可口的蛋糕,令人回味无穷;你只需要专心地品读和练习。我的书架上摆满Android书籍,但本书是其中*优秀的!
重量级参考书籍,新手的指路明灯。
—— Louis 在阅读本书前,你*好先了解一些Android和Java基础知识。
本书代码丰富,内容深刻,很多细节都是在别处找不到的。在精辟讲解每项技术的主要功能和概念后,都列举一些示例应用,助你扎实掌握要点。如果你是一名Android编程新手,本书将指导你走上专业之路,助你实现华丽蜕变!
内容简介
主要特色 涵盖Android*新的API,包括Job Scheduler、Android架构组件(包括Live Data和Room)和数据绑定 提供Android Studio IDE的详细说明以及Kotlin的介绍 详细介绍材料设计原则、设计指南、导航模式和UI的*佳实践 演示如何为所有形式的Android设备创建引人注目的UI 探索Firebase和Google Play服务的API库,包括地图、基于位置的服务以及Awareness API 掌握为将来的Android开发项目提供坚实支持的技能。
目录
目 录
第1章 你好,Android 1
1.1 Android应用开发 1
1.2 小背景 2
1.2.1 不远的过去 2
1.2.2 未来的发展 2
1.3 Android生态系统 3
1.4 Android的预安装应用 3
1.5 Android SDK的特性 4
1.6 Android在哪里运行 4
1.7 为什么要为移动设备开发应用 5
1.8 为什么要进行Android开发 5
1.9 Android开发框架介绍 5
1.9.1 Android SDK中都包含什么 5
1.9.2 了解Android软件堆层 6
1.9.3 Android运行时 7
1.9.4 Android应用架构 8
1.9.5 Android库 8
第2章 入门 9
2.1 Android应用开发入门 9
2.2 Android开发 10
2.2.1 准备工作 11
2.2.2 创建首个Android应用 14
2.2.3 开始使用Kotlin编写Android应用 23
2.2.4 使用Android Support Library包 24
2.3 进行移动和嵌入式设备开发 25
2.3.1 硬件设计考虑因素 25
2.3.2 考虑用户环境 28
2.3.3 进行Android开发 28
2.4 Android开发工具 31
2.4.1 Android Studio 32
2.4.2 Android虚拟机管理器 33
2.4.3 Android模拟器 34
2.4.4 Android Profiler 34
2.4.5 Android 调试桥 35
2.4.6 APK分析器 35
2.4.7 Lint检查工具 36
2.4.8 Monkey、Monkey Runner和Espresso UI测试 36
2.4.9 Gradle 37
第3章 应用、Activity和Fragment 38
3.1 应用、Activity和Fragment 38
3.2 Android应用的组件 39
3.3 Android应用的生命周期、优先级和进程状态 39
3.4 Android的Application类 41
3.5 进一步了解Android的Activity 41
3.5.1 创建Activity 41
3.5.2 使用AppCompatActivity 42
3.5.3 Activity的生命周期 42
3.5.4 响应内存压力 47
3.6 Fragment 48
3.6.1 创建新的Fragment 49
3.6.2 Fragment的生命周期 49
3.6.3 Fragment Manager介绍 52
3.6.4 添加Fragment到Activity中 52
3.6.5 Fragment与Activity之间的通信 57
3.6.6 没有UI的Fragment 57
3.7 构建Earthquake Viewer应用 58
第4章 定义Android配置清单和Gradle构建文件,并外部化资源 64
4.1 配置清单、构建文件和资源 64
4.2 Android配置清单 64
4.3 配置Gradle构建文件 68
4.3.1 settings.gradle 文件 68
4.3.2 项目的build.gradle文件 68
4.3.3 模块级build.gradle文件 69
4.4 外部化资源 72
4.4.1 创建资源 72
4.4.2 使用资源 79
4.4.3 为不同的语言和硬件创建资源 82
4.4.4 运行时配置更改 84
第5章 构建用户界面 87
5.1 Android设计基础 87
5.2 密度无关设计 88
5.3 Android UI基础 88
5.4 布局介绍 89
5.4.1 定义布局 91
5.4.2 使用布局创建设备无关的用户界面 91
5.4.3 优化布局 94
5.5 Android小部件工具箱 97
5.6 使用列表和网格 97
5.6.1 RecyclerView和Layout Manager 98
5.6.2 关于适配器 98
5.6.3 返回到Earthquake Viewer应用 101
5.7 关于数据绑定 102
5.7.1 使用数据绑定 102
5.7.2 数据绑定中的变量 103
5.7.3 数据绑定在Earthquake Viewer中的应用 103
5.8 创建新的View 105
5.8.1 修改现有的View 105
5.8.2 创建复合控件 108
5.8.3 创建作为布局的简单复合控件 109
5.8.4 创建自定义View 110
5.8.5 使用自定义控件 119
第6章 Intent与Broadcast Receiver 121
6.1 使用Intent和Broadcast Receiver 121
6.2 使用Intent启动Activity 122
6.2.1 显式启动新的Activity 122
6.2.2 隐式Intent与后期运行时绑定 123
6.2.3 确定Intent是否会被解析 123
6.2.4 返回Activity结果 124
6.2.5 使用平台本地动作启动Activity 126
6.3 创建Intent Filter以接收隐式Intent 127
6.3.1 定义Intent Filter 127
6.3.2 使用Intent Filter实现插件和扩展性 133
6.4 介绍Linkify 135
6.4.1 原生Linkify链接类型 136
6.4.2 创建自定义的链接字符串 136
6.4.3 使用MatchFilter接口 136
6.4.4 使用TransformFilter接口 137
6.5 使用Intent广播事件 137
6.5.1 使用Intent广播事件 137
6.5.2 使用Broadcast Receiver监听Intent广播 138
6.5.3 使用代码注册Broadcast Receiver 139
6.5.4 在应用配置清单中注册Broadcast Receiver 139
6.5.5 在运行时管理配置清单中注册的Receiver 140
6.5.6 通过广播Intent监听设备状态的变化 140
6.6 介绍Local Broadcast Manager 142
6.7 Pending Intent介绍 143
第7章 使用网络资源 144
7.1 连接网络 144
7.2 连接、下载和解析网络资源 145
7.2.1 为何要创建原生网络应用 145
7.2.2 连接到网络资源 145
7.2.3 使用View Model、Live Data和Asynchronous Task在后台线程中执行网络操作 146
7.2.4 使用XML Pull Parser解析XML 149
7.2.5 将Earthquake Viewer连接到网络 150
7.2.6 使用JSON Reader解析JSON 156
7.3 使用Download Manager 159
7.3.1 下载文件 160
7.3.2 自定义Download Manager通知 161
7.3.3 指定下载位置 162
7.3.4 取消和移除下载 163
7.3.5 查询Download Manager 163
7.4 下载数据而不损耗电池的*佳实践 165
7.5 网络服务及云计算简介 166
第8章 文件、存储状态和用户偏好 167
8.1 存储文件、状态和偏好 167
8.2 通过生命周期处理程序保存并恢复Activity和Fragment的实例状态 168
8.3 使用Headless Fragment和View Model保存实例状态 169
8.3.1 View Model和Live Data 169
8.3.2 Headless Fragment 171
8.4 创建和保存Shared Preference 172
8.5 获取Shared Preference 173
8.6 关于Shared Preference Change Listener的介绍 173
8.7 配置应用文件和Shared Preference的自动备份 173
8.8 构建偏好UI 174
8.8.1 使用Preference Support Library 175
8.8.2 使用XML定义Preference Screen的布局 175
8.8.3 Preference Fragment介绍 177
8.9 为Earthquake Monitor创建设置Activity 178
8.10 包含静态文件作为资源 182
8.11 使用文件系统 183
8.11.1 文件管理工具 183
8.11.2 在特定于应用的内部存储上创建文件 183
8.11.3 在特定于应用的外部存储上创建文件 183
8.11.4 使用范围化目录访问权限访问公共目录 184
8.12 使用File Provider共享文件 187
8.12.1 创建File Provider 187
8.12.2 使用File Provider共享文件 188
8.12.3 从File Provider接收文件 188
8.13 使用Storage Access Framework访问来自其他应用的文件 188
8.13.1 请求临时访问文件 189
8.13.2 请求对文件的持久访问 189
8.13.3 请求访问目录 189
8.13.4 创建新文件 190
8.14 使用基于URI的权限 190
第9章 创建和使用数据库 192
9.1 在Android中引入结构化数据存储 192
9.2 使用Room持久化库存储数据 193
9.2.1 添加Room持久化库 193
9.2.2 定义Room Database 194
9.2.3 使用类型转换器持久化复杂对象 196
9.2.4 使用DAO定义Room Database交互 196
9.2.5 执行Room Database交互 199
9.2.6 使用Live Data监控查询结果的变化 200
9.3 使用Room将地震数据持久化到数据库中 201
9.4 使用SQLite数据库 203
9.4.1 输入验证和SQL注入 204
9.4.2 Cursor与Content Values 204
9.4.3 定义数据库合约类 205
9.4.4 SQLiteOpenHelper介绍 205
9.4.5 使用SQLiteOpenHelper打开数据库 206
9.4.6 在没有SQLiteOpenHelper的情况下打开和创建数据库 207
9.4.7 添加、更新和删除行 207
9.4.8 从Cursor中提取值 209
9.5 Firebase Realtime Database介绍 210
9.5.1 将Firebase Realtime Database添加到应用中 211
9.5.2 定义Firebase Realtime Database并定义访问规则 213
9.5.3 添加、修改、删除和查询Firebase Realtime Database中的数据 214
第10章 Content Provider与搜索 216
10.1 Content Provider介绍 216
10.2 使用Content Provider的原因 217
10.3 创建Content Provider 217
10.3.1 创建Content Provider的数据库 218
10.3.2 注册Content Provider 218
10.3.3 公开Content Provider的URI地址 219
10.3.4 实现Content Provider查询 219
10.3.5 Content Provider事务 221
10.3.6 使用Content Provider共享文件 222
10.3.7 向Content Provider添加权限要求 223
10.4 使用Content Resolver访问Content Provider 224
10.4.1 查询Content Provider 225
10.4.2 取消查询 226
10.4.3 使用Cursor Loader异步查询内容 227
10.4.4 添加、删除和更新内容 229
10.4.5 访问存储在Content Provider中的文件 230
10.4.6 访问权限受限的Content Provider 231
10.5 使用Android原生Content Provider 232
10.5.1 访问Call Log Content Provider 232
10.5.2 使用Media Store Content Provider 233
10.5.3 使用联系人Content Provider 234
10.5.4 使用日历Content Provider 238
10.6 在应用中添加搜索 241
10.6.1 定义搜索元数据 241
10.6.2 创建搜索结果Activity 241
10.6.3 搜索Content Provider 242
10.6.4 使用Search View小部件 245
10.6.5 使用Content Provider提供搜索建议 246
10.6.6 搜索地震监测数据库 249
第11章 工作在后台 257
11.1 为什么要工作在后台 257
11.2 使用后台线程 258
11.2.1 使用AsyncTask异步运行任务 258
11.2.2 使用Handler Thread手动创建线程 261
11.3 调度后台作业 262
11.3.1 为Job Scheduler创建Job Service 263
11.3.2 使用Job Scheduler调度作业 265
11.3.3 使用Firebase Job Dispatcher计划作业 266
11.3.4 使用Work Manager计划作业 268
11.3.5 Job Service在Earthquake示例中的应用 270
11.4 使用Notification通知用户 273
11.4.1 Notification Manager简介 273
11.4.2 使用通知渠道 274
11.4.3 创建通知 274
11.4.4 设置通知的优先级 277
11.4.5 添加通知动作 280
11.4.6 添加直接回复动作 280
11.4.7 分组多个通知 281
11.4.8 通知在Earthquake示例中的应用 283
11.5 使用Firebase Cloud Messaging 285
11.5.1 使用Firebase Notification远程触发通知 285
11.5.2 使用Firebase Cloud Messaging接收数据 288
11.6 使用闹钟 288
11.6.1 创建、设置和取消闹钟 289
11.6.2 设置闹钟 289
11.7 服务介绍 290
11.7.1 使用绑定服务 290
11.7.2 创建启动服务 291
11.7.3 创建服务 292
11.7.4 启动和停止服务 292
11.7.5 控制服务重启行为 293
11.7.6 自终止服务 294
11.7.7 创建前台服务 294
第12章 贯彻Android设计理念 295
12.1 Android设计理念介绍 295
12.2 为每个屏幕进行设计 296
12.2.1 分辨率独立性 296
12.2.2 支持和优化不同的屏幕尺寸 297
12.2.3 创建可缩放的图像资源 299
12.3 Material Design介绍 303
12.3.1 从纸和墨水的角度思考 303
12.3.2 使用颜色和基准线(Keyline)作为指导 304
12.3.3 运动带来的连贯性 306
12.4 Material Design UI元素 308
12.4.1 应用栏 308
12.4.2 Material Design在Earthquake示例中的应用 310
12.4.3 使用Card显示内容 311
12.4.4 悬浮按钮 313
第13章 实现现代Android用户体验 315
13.1 现代Android UI 315
13.2 使用AppCompat创建外观一致的现代用户界面 316
13.2.1 使用AppCompat创建并应用主题 316
13.2.2 为特定视图创建Theme Overlay 317
13.3 向应用栏添加菜单和动作 317
13.3.1 定义菜单资源 317
13.3.2 向Activity添加菜单 318
13.3.3 向Fragment添加菜单 319
13.3.4 动态更新菜单项 319
13.3.5 处理菜单选择 319
13.3.6 添加Action View和Action Provider 320
13.4 不仅限于默认应用栏 321
13.4.1 用工具栏替换应用栏 321
13.4.2 工具栏的高级滚动技术 322
13.4.3 如何不用应用栏添加菜单 324
13.5 改进Earthquake示例的应用栏 324
13.6 应用的导航模式 326
13.6.1 使用选项卡导航 326
13.6.2 实现底部导航栏 328
13.6.3 使用导航抽屉 330
13.6.4 组合导航模式 334
13.7 向Earthquake示例添加选项卡 334
13.8 选择正确的提示等级 337
13.8.1 初始化对话框 337
13.8.2 生成一条Toast消息 338
13.8.3 使用Snackbar的内联中断 339
第14章 用户界面的高级定制 341
14.1 拓展用户体验 341
14.2 支持无障碍访问性 342
14.2.1 支持无触摸屏的导航 342
14.2.2 为每个视图提供文本描述 342
14.3 Android文本语音转换介绍 342
14.4 使用语音识别 344
14.4.1 使用语音识别进行语音输入 345
14.4.2 使用语音识别进行搜索 345
14.5 控制设备振动 346
14.6 全屏模式 346
14.7 使用属性动画 347
14.7.1 创建属性动画 348
14.7.2 创建属性动画集 349
14.7.3 使用动画监听器 349
14.8 增强你的视图 350
14.9 高级Canvas绘图 350
14.9.1 能绘制什么 350
14.9.2 充分利用Paint 351
14.9.3 通过抗锯齿提高Paint绘图质量 354
14.9.4 Canvas绘图*佳实践 354
14.9.5 高级罗盘面板示例 355
14.9.6 创建交互式控件 361
14.9.7 使用设备键、按钮和十字键 364
14.10 复合Drawable资源 365
14.10.1 可变形的Drawable资源 365
14.10.2 Layer Drawable 366
14.10.3 State List Drawable 366
14.10.4 Level List Drawable 367
14.11 复制、粘贴和剪贴板 367
14.11.1 将数据复制到剪贴板 368
14.11.2 粘贴剪贴板数据 368
第15章 位置、情境感知和地图 369
15.1 向应用添加位置、地图和情境感知 369
15.2 Google Play服务介绍 370
15.2.1 向应用添加Google Play服务 370
15.2.2 确定Google Play服务的可用性 372
15.3 使用Google位置信息服务查找设备位置 372
15.3.1 使用模拟器测试基于位置的功能 373
15.3.2 查找*后的位置 374
15.3.3 Where Am I示例 375
15.3.4 请求位置更改更新 378
15.3.5 通过Pending Intent接收位置更新 380
15.3.6 定义更新的过期条件 381
15.3.7 后台位置更新限制 381
15.3.8 更改设备位置设置 382
15.3.9 在Where Am I示例中更新位置 384
15.3.10 使用位置时的*佳实践 386
15.4 设置和管理地理围栏 387
15.5 使用传统平台的LBS 389
15.5.1 选择Location Provider 390
15.5.2 查找*后位置 391
15.5.3 请求位置更改更新 392
15.5.4 使用传统LBS的*佳实践 393
15.6 使用Geocoder 396
15.6.1 逆向地理编码 396
15.6.2 正向地理编码 397
15.6.3 地理编码在Where Am I项目中的应用 398
15.7 创建基于地图的Activity 399
15.7.1 获取Google Maps API密钥 399
15.7.2 创建基于地图的Activity 400
15.7.3 配置Google地图 401
15.7.4 通过CameraUpdate更改相机位置 402
15.7.5 地图在Where Am I项目中的应用 404
15.7.6 使用My Location层显示当前位置 407
15.7.7 显示交互式地图标记 407
15.7.8 向Google地图添加形状 409
15.7.9 向Google地图添加图像叠加层 411
15.7.10 向Where Am I项目添加标记和形状 412
15.8 地图在Earthquake示例中的应用 414
15.9 添加情境感知 417
15.9.1 连接到Google Play服务API客户端并获取API密钥 417
15.9.2 使用感知快照 418
15.9.3 设置和监控感知围栏 419
15.9.4 Awareness*佳实践 422
第16章 硬件传感器 423
16.1 Android传感器介绍 423
16.1.1 使用Sensor Manager 424
16.1.2 理解Android传感器 424
16.1.3 发现和识别传感器 426
16.1.4 确定传感器的功能 427
16.1.5 Wakeup和非Wakeup传感器 428
16.1.6 监测传感器结果 428
16.1.7 读取传感器值 431
16.2 使用Android虚拟设备和模拟器测试传感器 433
16.3 使用传感器的*佳实践 434
16.4 监控设备的移动和朝向 434
16.4.1 确定设备的自然朝向 435
16.4.2 加速度计介绍 435
16.4.3 检测加速度变化 436
16.4.4 创建重力仪 437
16.4.5 确定设备的朝向 439
16.4.6 创建指南针和人工地平线 443
16.5 使用环境传感器 445
16.5.1 使用气压计传感器 445
16.5.2 创建气象站 446
16.6 使用身体传感器 449
16.7 用户活动识别 451
第17章 音频、视频和使用摄像头 453
17.1 播放音频和视频,以及使用摄像头 453
17.2 播放音频和视频 454
17.2.1 媒体播放器简介 454
17.2.2 使用Media Play播放视频 456
17.2.3 使用ExoPlayer播放视频 458
17.2.4 请求和管理音频焦点 459
17.2.5 输出改变时暂停播放 461
17.2.6 响应音量按键 461
17.2.7 使用Media Session 462
17.3 使用Media Router和Cast Application框架 464
17.4 后台音频播放 467
17.4.1 构建音频播放服务 468
17.4.2 将Activity连接到Media Browser服务 469
17.4.3 Media Browser服务的生命周期 470
17.5 在前台服务中播放音频 471
17.6 使用Media Recorder录制音频 473
17.7 使用摄像头拍照 475
17.7.1 使用Intent拍照 475
17.7.2 直接控制摄像头 476
17.7.3 读取和写入JPEG EXIF图像详情 480
17.8 录制视频 481
17.8.1 使用Intent录制视频 481
17.8.2 使用Media Recorder录制视频 482
17.9 将媒体添加到Media Store 483
17.9.1 使用Media Scanner插入新的媒体 484
17.9.2 手动插入媒体 484
第18章 使用蓝牙、NFC和Wi-Fi点对点进行通信 486
18.1 网络和点对点通信 486
18.2 使用蓝牙API传输数据 486
18.2.1 管理本地蓝牙设备适配器 487
18.2.2 可被发现和远程设备发现 488
18.2.3 蓝牙通信 491
18.2.4 蓝牙配置文件 494
18.2.5 低功耗蓝牙 495
18.3 使用Wi-Fi点对点协议传输数据 497
18.3.1 初始化Wi-Fi点对点框架 497
18.3.2 发现节点 498
18.3.3 连接节点设备 499
18.3.4 在节点间传输数据 500
18.4 使用近场通信 501
18.4.1 读取NFC标签 501
18.4.2 使用前台分派系统 502
18.5 使用Android Beam 504
18.5.1 创建Android Beam消息 504
18.5.2 分配Android Beam负载数据 505
18.5.3 接收Android Beam消息 506
第19章 使用主屏 507
19.1 自定义主屏 507
19.2 主屏小部件介绍 507
19.2.1 定义小部件的布局 509
19.2.2 定义小部件的尺寸和其他元数据 510
19.2.3 实现小部件 511
19.2.4 使用App Widget Manager和Remote View更新Widget UI 512
19.2.5 强制刷新小部件的数据和UI 514
19.2.6 创建和使用小部件Configuration Activity 516
19.3 创建地震小部件 517
19.4 Collection View小部件介绍 521
19.4.1 创建Collection View小部件的布局 522
19.4.2 使用Remote Views Factory更新Collection View 523
19.4.3 使用Remote Views Service更新Collection View 524
19.4.4 使用Remote Views Service填充Collection View小部件 525
19.4.5 为Collection View小部件中的条目添加交互性 526
19.4.6 刷新Collection View小部件 526
19.4.7 创建地震Collection View小部件 526
19.5 创建Live Wallpaper 531
19.5.1 创建Live Wallpaper定义资源 532
19.5.2 创建Wallpaper Service Engine 532
19.5.3 创建Wallpaper Service 533
19.6 创建App快捷方式 534
19.6.1 静态快捷方式 535
19.6.2 动态快捷方式 535
19.6.3 追踪App快捷方式的使用 537
第20章 高级Android开发 538
20.1 高级Android 538
20.2 偏执的Android 539
20.2.1 Linux内核安全性 539
20.2.2 再述权限 539
20.2.3 在Android Keystore中存储密钥 541
20.2.4 使用指纹传感器 541
20.3 处理不同的软硬件可用性 542
20.3.1 指定所需的硬件 542
20.3.2 确认硬件的可用性 543
20.3.3 构建向后兼容的应用 543
20.4 使用严格模式优化UI性能 544
20.5 电话和短信 545
20.5.1 电话 546
20.5.2 收发短信 550
第21章 应用的发布、分发和监控 564
21.1 准备发布应用 564
21.1.1 准备发布材料 565
21.1.2 准备代码以进行发布构建 565
21.2 在应用清单文件中更新应用元数据 566
21.2.1 检查应用安装限制 566
21.2.2 应用的版本管理 567
21.3 给应用的生产构建版本签名 567
21.3.1 使用Android Studio创建Keystore和签名密钥 568
21.3.2 获取基于私有发布密钥的API密钥 569
21.3.3 构建生产发布版本并签名 569
21.4 在Google Play商店中发布应用 570
21.4.1 Google Play商店简介 571
21.4.2 Google Play 商店初体验 571
21.4.3 在Google Play商店中创建应用 572
21.4.4 发布应用 577
21.4.5 监控生产环境中的应用 579
21.5 应用变现介绍 582
21.6 App营销、促销和分发策略 583
21.6.1 应用上线策略 583
21.6.2 国际化 584
21.7 使用Firebase监控应用 584
21.7.1 把Firebase添加到应用中 585
21.7.2 使用Firebase Analytics 585
21.7.3 Firebase Performance Monitoring 587
展开全部
作者简介
Reto Meier自2007年首次发布Android以来,就一直致力于帮助Android开发人员为用户创建*佳应用。Reto在澳大利亚西部的珀斯长大,之后在伦敦度过了“接下来的18个月”,总共6年。2011年他与妻子在旧金山湾区定居。
Reto在Google担任开发人员代言人已有10年的时间,他为开发人员社区提供文章、在线培训、会议演讲和YouTube视频。
在智能手机出现之前,Reto已在各个行业(包括海上石油天然气和金融业)担任软件开发人员超过10年。
Ian Lake 在2013年于旧金山湾区定居前,曾在美国的9个州居住过。Ian是Google Android Toolkit团队的成员,专注于提供现代Android开发所需的库和API。在此之前,他曾是一名Android开发人员倡导者、Android应用开发人员和企业应用开发人员,那时,Android还未盛行。
预估到手价 ×
预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。
确定