您好,欢迎光临有路网!
Android C++高级编程-使用NDK
QQ咨询:
有路璐璐:

Android C++高级编程-使用NDK

  • 作者:清华大学出版社
  • 出版社:清华大学出版社
  • ISBN:9787302343011
  • 出版日期:2014年01月01日
  • 页数:344
  • 定价:¥59.80
  • 猜你也喜欢

    分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    不管你是想将已经存在的原生代码应用移植到Android平台上还是准备开始在Android平台上进行软件开发,使用《Android C++**编程——使用NDK》一书提供的技术可以构建更出色的应用。本书将展示构建性能更好的复杂原生应用的方法。
    《Android C++**编程——使用NDK》提供了Java原生接口(JNI)的概述、Bionic API、POSIX 线程和套接字、C++支持、原生图形和声音API以及NEON/SIMD优化,在一个游戏应用案例的帮助下,你将学到很多关键技能。
    主要内容
    ● 使用JNI将原生代码连接到Java中
    ● 使用SWIG自动生成JNI代码
    ● 使用POSIX线程实现多线程应用
    ● 使用POSIX套接字实现网络应用
    ● 使用logging、GDB和Eclipse调试器进行调试
    ● 使用Valgrind分析内存
    ● 使用GProf 测试应用性能
    ● 使用NEON/SIMD优化代码
    ● 使用Eclipse IDE开发原生代码
    《Android C++**编程——使用NDK》提供了移植、开发以及利用Android平
    目录
    目 录
    第1章 Android平台上的C++入门 1
    1.1 Microsoft Windows 1
    1.1.1 在Windows平台上下载并安装JDK开发包 2
    1.1.2 在Windows平台上下载并安装Apache ANT 5
    1.1.3 在Windows平台上下载并安装Android SDK 7
    1.1.4 在Windows平台上下载并安装Cygwin 8
    1.1.5 在Windows平台上下载并安装Android NDK 11
    1.1.6 在Windows平台上下载并安装Eclipse 13
    1.2 Apple Mac OS X 14
    1.2.1 在Mac平台上安装Xcode 14
    1.2.2 验证Mac平台的Java开发包 15
    1.2.3 验证Mac平台上的Apache ANT 15
    1.2.4 验证GNU Make 16
    1.2.5 在Mac平台上下载并安装Android SDK 16
    1.2.6 在Mac平台上下载并安装Android NDK 18
    1.2.7 在Mac平台上下载并安装Eclipse 19
    1.3 Ubuntu Linux 20
    1.3.1 检查GNU C库版本 20
    1.3.2 激活在64位系统上支持32位的功能 21
    1.3.3 在Linux平台上下载并安装Java开发工具包(JDK) 21
    1.3.4 在Linux平台上下载并安装Apache ANT 22
    1.3.5 在Linux平台上下载并安装GNU Make 22
    1.3.6 在Linux平台上下载并安装Android SDK 23
    1.3.7 在Linux平台上下载并安装Android NDK 24
    1.3.8 在Linux平台上下载并安装Eclipse 25
    1.4 下载并安装ADT 26
    1.4.1 安装Android平台包 29
    1.4.2 配置模拟器 30
    1.5 小结 33
    第2章 深入了解Android
    NDK 35
    2.1 Android NDK提供的组件 35
    2.2 Android NDK的结构 36
    2.3 以一个示例开始 36
    2.3.1 指定Android NDK的位置 37
    2.3.2 导入示例项目 37
    2.3.3 向项目中添加原生支持 39
    2.3.4 运行项目 40
    2.3.5 用命令行对项目进行构建 41
    2.3.6 检测Android NDK项目的结构 42
    2.4 构建系统 42
    2.4.1 Android.mk 43
    2.4.2 Application.mk 53
    2.5 使用NDK-Build脚本 54
    2.6 排除构建系统故障 55
    2.7 小结 56
    第3章 用JNI实现与原生代码通信 57
    3.1 什么是JNI 57
    3.2 以一个示例开始 57
    3.2.1 原生方法的声明 58
    3.2.2 加载共享库 58
    3.2.3 实现原生方法 59
    3.3 数据类型 64
    3.3.1 基本数据类型 64
    3.3.2 引用类型 64
    3.4 对引用数据类型的操作 65
    3.4.1 字符串操作 65
    3.4.2 数组操作 67
    3.4.3 NIO 操作 68
    3.4.4 访问域 69
    3.4.5 调用方法 71
    3.4.6 域和方法描述符 72
    3.5 异常处理 75
    3.5.1 捕获异常 75
    3.5.2 抛出异常 75
    3.6 局部和全局引用 76
    3.6.1 局部引用 76
    3.6.2 全局引用 76
    3.6.3 弱全局引用 77
    3.7 线程 78
    3.7.1 同步 78
    3.7.2 原生线程 79
    3.8 小结 79
    第4章 使用SWIG自动生成JNI代码 81
    4.1 什么是SWIG 81
    4.2 安装 82
    4.2.1 Windows平台上SWIG的安装 82
    4.2.2 在Mac OS X下安装 83
    4.2.3 在Ubuntu Linux下安装 85
    4.3 通过示例程序**SWIG 86
    4.3.1 接口文件 86
    4.3.2 在命令行方式下调用SWIG 89
    4.3.3 将SWIG集成到Android构建过程中 90
    4.3.4 更新Activity 92
    4.3.5 执行应用程序 93
    4.3.6 剖析生成的代码 93
    4.4 封装C语言代码 94
    4.4.1 全局变量 94
    4.4.2 常量 95
    4.4.3 只读变量 96
    4.4.4 枚举 97
    4.4.5 结构体 100
    4.4.6 指针 101
    4.5 封装C++代码 101
    4.5.1 指针、引用和值 102
    4.5.2 默认参数 103
    4.5.3 重载函数 104
    4.5.4 类 104
    4.6 异常处理 106
    4.7 内存管理 107
    4.8 从原生代码中调用Java 108
    4.8.1 异步通信 108
    4.8.2 启用Directors 109
    4.8.3 启用RTTI 109
    4.8.4 重写回调方法 109
    4.8.5 更新HelloJni Activity 110
    4.9 小结 110
    第5章 日志、调试及故障处理 111
    5.1 日志 111
    5.1.1 框架 111
    5.1.2 原生日志API 112
    5.1.3 受控制的日志 114
    5.1.4 控制台日志 118
    5.2 调试 119
    5.2.1 预备知识 119
    5.2.2 调试会话建立 120
    5.2.3 建立调试示例 121
    5.2.4 启动调试器 121
    5.3 故障处理 126
    5.3.1 堆栈跟踪分析 127
    5.3.2 对JNI的扩展检查 128
    5.3.3 内存问题 130
    5.3.4 strace 133
    5.4 小结 134
    第6章 Bionic API入门 135
    6.1 回顾标准库 135
    6.2 还有另一个C库 136
    6.2.1 二进制兼容性 136
    6.2.2 提供了什么 136
    6.2.3 缺什么 137
    6.3 内存管理 137
    6.3.1 内存分配 137
    6.3.2 C语言的动态内存管理 138
    6.3.3 C++的动态内存管理 139
    6.4 标准文件I/O 141
    6.4.1 标准流 141
    6.4.2 使用流I/O 141
    6.4.3 打开流 142
    6.4.4 写入流 143
    6.4.5 流的读取 145
    6.4.6 搜索位置 148
    6.4.7 错误检查 149
    6.4.8 关闭流 149
    6.5 与进程交互 150
    6.5.1 执行shell命令 150
    6.5.2 与子进程通信 150
    6.6 系统配置 151
    6.6.1 通过名称获取系统属性值 152
    6.6.2 通过名称获取系统属性 152
    6.7 用户和组 153
    6.7.1 获取应用程序用户和组ID 153
    6.7.2 获取应用程序用户名 154
    6.8 进程间通信 154
    6.9 小结 154
    第7章 原生线程 155
    7.1 创建线程示例项目 155
    7.1.1 创建Android项目 155
    7.1.2 添加原生支持 157
    7.1.3 声明字符串资源 157
    7.1.4 创建简单的用户界面 157
    7.1.5 实现Main Activity 159
    7.1.6 生成C/C++头文件 162
    7.1.7 实现原生函数 163
    7.1.8 更新Android.mk构建脚本 165
    7.2 Java 线程 165
    7.2.1 修改示例应用程序使之能够使用Java线程 165
    7.2.2 执行Java Threads示例 166
    7.2.3 原生代码使用Java线程的优缺点 167
    7.3 POSIX线程 168
    7.3.1 在原生代码中使用POSIX线程 168
    7.3.2 用pthread_create创建线程 168
    7.3.3 更新示例应用程序以使用POSIX线程 169
    7.3.4 执行POSIX线程示例 174
    7.4 从POSIX线程返回结果 174
    7.5 POSIX线程同步 176
    7.5.1 用互斥锁同步POSIX线程 176
    7.5.2 使用信号量同步POSIX线程 180
    7.6 POSIX线程的优先级和调度策略 180
    7.6.1 POSIX的线程调度策略 181
    7.6.2 POSIX Thread优先级 181
    7.7 小结 181
    第8章 POSIX Socket API:面向连接的通信 183
    8.1 Echo Socket示例应用 183
    8.1.1 Echo Android应用项目 184
    8.1.2 抽象echo activity 184
    8.1.3 echo应用程序字符串资源 188
    8.1.4 原生echo模块 188
    8.2 用TCP sockets实现面向连接的通信 191
    8.2.1 Echo Server Activity的布局 192
    8.2.2 Echo Server Activity 193
    8.2.3 实现原生TCP Server 194
    8.2.4 Echo客户端Activity布局 206
    8.2.5 Echo客户端Activity 208
    8.2.6 实现原生TCP客户端 210
    8.2.7 更新Android Manifest 213
    8.2.8 运行TCP Sockets示例 214
    8.3 小结 217
    第9章 POSIX Socket API:无连接的通信 219
    9.1 将UDP Server方法添加到
    Echo
    Server Activity中 219
    9.2 实现原生UDP Server 220
    9.2.1 创建UDP Socket:socket 220
    9.2.2 从Socket接收数据报:recvfrom 221
    9.2.3 向Socket发送数据报:sendto 223
    9.2.4 原生UDP Server方法 224
    9.3 将原生UDP Client方法加入
    Echo
    Client Activity中 225
    9.4 实现原生UDP Client 226
    9.5 运行UDP Sockets示例 228
    9.5.1 连通UDP的模拟器 228
    9.5.2 启动Echo UDP Client 229
    9.6 小结 229
    第10章 POSIX Socket API:本地通信 231
    10.1 Echo Local Activity布局 231
    10.2 Echo Local Activity 232
    10.3 实现原生本地Socket Server 237
    10.3.1 创建本地Socket:socket 237
    10.3.2 将本地socket与Name绑定:bind 238
    10.3.3 接受本地Socket:accept 240
    10.3.4 原生本地Socket Server 240
    10.4 将本地Echo Activity添加到Manifest中 242
    10.5 运行本地 Sockets示例 243
    10.6 异步I/O 243
    10.7 小结 244
    第11章 支持C++ 245
    11.1 支持的C++运行库 245
    11.1.1 GAbi++ C++运行库 246
    11.1.2 STLport C++运行库 246
    11.1.3 GNU STL C++运行库 246
    11.2 指定C++运行库 246
    11.3 静态运行库与动态运行库 247
    11.4 C++异常支持 247
    11.5 C++ RTTI支持 248
    11.6 C++标准库入门 249
    11.6.1 容器 249
    11.6.2
    迭代器 250
    11.6.3 算法 251
    11.7 C++运行库的线程** 251
    11.8 C++运行库调试模式 251
    11.8.1 GNU STL调试模式 251
    11.8.2 STLport调试模式 252
    11.9 小结 253
    第12章 原生图形API 255
    12.1 原生图形API的可用性 255
    12.2 创建一个AVI视频播放器 256
    12.2.1 将AVILib作为NDK的一个导入模块 256
    12.2.2 创建AVI播放器Android应用程序 258
    12.2.3 创建AVI Player的Main Activity 258
    12.2.4 创建Abstract Player Activity 262
    12.3 使用JNI图形API进行渲染 269
    12.3.1 启用JNI Graphics API 269
    12.3.2 使用JNI Graphics API 270
    12.3.3 用Bitmap渲染来更新AVI Player 271
    12.3.4 运行使用Bitmap渲染的AVI Player 278
    12.4 使用OpenGL ES渲染 279
    12.4.1 使用OpenGL ES API 279
    12.4.2 启用OpenGL ES 1.x API 279
    12.4.3 启用OpenGL ES 2.0 API 280
    12.4.4 用OpenGL ES渲染来更新AVI Player 280
    12.5 使用原生Window API进行渲染 290
    12.5.1 启用原生Window API 290
    12.5.2 使用原生Window API 291
    12.5.3 用原生window渲染器来更新AVI Player 293
    12.5.4 EGL图形库 301
    12.6 小结 301
    第13章 原生音频API 303
    13.1 使用OpenSL ES API 303
    13.1.1 与OpenSL ES标准的兼容性 304
    13.1.2 音频许可 304
    13.2 创建WAVE音频播放器 304
    13.2.1 将WAVELib作为NDK导入模块 304
    13.2.2 创建WAVE播放器Android应用程序 306
    13.2.3 创建WAVE播放器主Activity 306
    13.2.4 实现WAVE Aduio播放 310
    13.3 运行WAVE Audio Player 327
    13.4 小结 328
    第14章 程序概要分析和NEON优化 329
    14.1 用GNU Profiler度量性能 329
    14.1.1 安装Android NDK Profiler 329
    14.1.2 启用Android NDK Profiler 330
    14.1.3 使用GNU Profiler分析gmon.out文件 331
    14.2 使用ARM NEON Intrinsics进行优化 332
    14.2.1 ARM NEON技术概述 333
    14.2.2 给AVI Player添加一个亮度过滤器 333
    14.2.3 为AVI播放器启用Android NDK Profiler 336
    14.2.4 AVI Player程序概要分析 337
    14.2.5 使用NEON Intrinsics优化Brightness Filter 338
    14.3 自动向量化 342
    14.3.1 启用自动向量化 343
    14.3.2 自动向量化问题的发现和排除 344
    14.4 小结 344
    编辑推荐语
    微软Android平台Skype客户端**产品经理Onur Cinar*新作品,国内首本基于C++开发android应用书籍,书中源码免费提供下载

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外