新書推薦:

《
计算思维:信息科技跨学科主题学习实践
》
售價:HK$
74.8

《
钩编圆滚滚的瓦尤包袋
》
售價:HK$
65.8

《
日暮途穷:大清覆灭前夕的关键时刻
》
售價:HK$
96.8

《
固定收益证券分析(原书第4版)
》
售價:HK$
218.9

《
肺部疾病临床与影像解析(第二版)
》
售價:HK$
360.8

《
明代书院讲会研究
》
售價:HK$
97.9

《
消失的亿万富翁:更好的投资、财务决策指南
》
售價:HK$
76.9

《
新见明代南京仓场文书:天一阁藏公文纸本《国朝诸臣奏议》纸背文献整理与研究
》
售價:HK$
385.0
|
編輯推薦: |
本书从初学者的角度出发,详尽地介绍了进行NDK开发所需的基础知识,旨在帮助读者迅速地建立起全面的NDK开发知识体系。内容涵盖了从NDK学习方法、基本概念到核心理论基础及关键技术的完整路径,通过逐步深入的讲解,确保读者能够系统地掌握各个层面的内容。
|
內容簡介: |
本书旨在通过深入的理论与丰富的实战案例,引领读者系统学习NDK开发技术。NDK技术以其高安全性、卓越性能和高度复用性,成为现代应用开发的关键技术之一。本书从基本概念出发,全面介绍了NDK开发所需的核心基础知识,并详细讲解了如何从零开始构建一个完整的NDK项目,以及如何利用集成开发环境高效地进行NDK项目的调试与优化。书中不仅涵盖了当前主流的开发技术和最佳实践,更通过理论与实战相结合的教学模式,让读者能够迅速将所学知识应用于实际工作中,提高开发效率,打造出更优质的应用产品。
來源:香港大書城megBookStore,http://www.megbook.com.hk 本书共13章,分为基础篇和实战篇。基础篇(第1~8章)详细讲述NDK开发理论基础及环境搭建相关知识。从NDK基础概念到交叉编译原理、CMake基本语法的使用,逐步深入到NDK实战项目的运用;实战篇(第9~13章)利用入门基础篇所学内容搭建一个完整的NDK实战项目。本书示例代码丰富,实际性和系统性较强,并配有视频讲解,助力读者透彻理解书中的重点、难点。
本书既适合初学者入门,精心设计的案例对于工作多年的开发者也有参考价值,并可作为高等院校和培训机构相关专业的教学参考书。
|
關於作者: |
蒋超,一个在IT领域摸爬滚打十多年的老程序员、课程讲师、作者。在公司担任资深软件工程师职务,有多年嵌入式、OS、客户端、服务器端全栈开发经验,特别对音视频和NDK有较深入的研究。
|
目錄:
|
基 础 篇
第1章 NDK入门基础( 60min) 3
1.1 NDK的概念 3
1.1.1 JNI的基础概念 3
1.1.2 NDK的使用场景 4
1.1.3 NDK的学习方法 4
1.1.4 开发资料 5
1.2 编译概念 5
1.2.1 动态库 5
1.2.2 静态库 18
1.2.3 静态库和动态库的使用场景 21
1.2.4 交叉编译 21
1.2.5 预编译库 22
1.2.6 预编译库和源码编译库的区别 23
1.3 CPU指令集和ABI 24
1.3.1 CPU指令集 25
1.3.2 ABI 25
1.4 CMake概念 27
1.4.1 CMake介绍 27
1.4.2 选择CMake的原因 28
1.5 NDK目录介绍 29
1.6 本章小结 31
第2章 环境搭建( 41min) 32
2.1 Ubuntu环境搭建 32
2.1.1 Ubuntu虚拟机安装 32
2.1.2 独立NDK环境配置 48
2.2 集成NDK环境搭建之Android Studio 52
2.3 本章小结 56
第3章 NDK开发场景( 57min) 57
3.1 NDK开发实际集成源码的场景 57
3.1.1 使用Android Studio源码直接集成 57
3.1.2 使用命令编译出符合平台相关的预编译库 65
3.1.3 使用Android Studio 直接集成预编译库 70
3.1.4 使用开源代码原始的方式交叉编译FFmpeg 77
3.1.5 Neon 86
3.2 本章小结 88
第4章 CMake开发基础( 72min) 89
4.1 CMake的基础使用 89
4.1.1 日志打印方法 89
4.1.2 流程控制 90
4.1.3 目标生成与链接 95
4.1.4 CMake设置库的输出路径 96
4.1.5 CMake如何包含头文件 97
4.1.6 CMake如何包含源文件列表及包含所有源文件语法 98
4.2 CMake多模块场景 99
4.2.1 多CMake应用场景 99
4.2.2 多CMake的实际使用案例 100
4.3 本章小结 104
第5章 NDK开发常用的数据类型及使用方法( 67min) 105
5.1 基础类型说明 105
5.2 引用类型说明 106
5.2.1 C语言下的引用类型 106
5.2.2 C 语言下的引用类型 107
5.3 UTF-8和UTF-16字符串 108
5.4 常用数据类型操作函数的使用 109
5.4.1 String字符串的使用 109
5.4.2 数组操作 111
5.5 本章小结 116
第6章 NDK开发核心知识点( 51min) 117
6.1 JavaVM 117
6.2 JNIEnv 119
6.3 全局引用和局部引用 120
6.3.1 局部引用 120
6.3.2 全局引用 122
6.3.3 弱全局引用 124
6.3.4 JNI_OnLoad 126
6.3.5 JNI_OnUnload 127
第7章 NDK开发关键函数( 163min) 128
7.1 函数操作基础 128
7.1.1 函数签名 128
7.1.2 jclass 133
7.1.3 jmethodID 135
7.2 调用Java端的函数 136
7.2.1 Native调用Java端成员函数 137
7.2.2 Native调用Java端的静态函数 140
7.3 Linux线程使用方法 141
7.3.1 线程的创建函数pthread_create 141
7.3.2 获取线程ID函数pthread_self 142
7.3.3 线程退出函数pthread_exit 143
7.3.4 线程资源回收函数pthread_join 147
7.3.5 线程终止函数pthread_cancel 149
7.3.6 线程分离函数pthread_detach 153
7.3.7 线程属性pthread_attr_t 155
7.3.8 小结 158
7.4 原生线程中获取JNIEnv 158
7.5 本章小结 162
第8章 NDK开发函数注册方式( 32min) 163
8.1 函数的静态注册方式 163
8.2 函数的动态注册方式 164
8.2.1 JNINativeMethod 164
8.2.2 RegisterNatives和UnregisterNatives函数 165
8.2.3 示例 165
8.3 静态注册和动态注册的优缺点及使用场景 167
8.3.1 静态注册的优缺点及使用场景 167
8.3.2 动态注册的优缺点和使用场景 168
8.3.3 小结 168
8.4 本章小结 168
实 战 篇
第9章 NDK开发之大量数据传输( 79min) 171
9.1 DirectByteBuffer简单介绍 171
9.2 DirectByteBuffer的使用方法 172
9.2.1 创建DirectByteBuffer 172
9.2.2 DirectByteBuffer API使用 172
9.3 DirectByteBuffer的使用场景 177
9.3.1 大数据量的IO密集型操作 177
9.3.2 长期使用的数据 177
9.3.3 对内存管理有特殊要求的场景 177
9.3.4 需要直接访问操作系统内存资源的场景 177
9.4 DirectByteBuffer的使用案例 177
第10章 NDK开发之opus开源库开发案例( 70min) 181
10.1 开源库opus源码封装 182
10.1.1 opus预编译库的编译与集成 183
10.1.2 opus库的基本使用 187
10.1.3 opus库的封装 190
10.2 使用opus开发PTT语音通话案例 192
10.2.1 UI开发 192
10.2.2 编解码及网络接口封装 198
10.2.3 录音功能实现 207
10.2.4 播放功能实现 210
10.3 本章小结 212
第11章 NDK开发调试( 80min) 213
11.1 使用Android Studio调试Native代码 213
11.1.1 启用调试功能 213
11.1.2 开始调试 214
11.2 问题跟踪 225
11.2.1 Native函数返回值崩溃 225
11.2.2 动态库Debug版本和Release版本的区别 226
11.2.3 如何快速定位Native崩溃 227
11.3 本章小结 231
第12章 线上崩溃Log捕获( 31min) 232
12.1 使用谷歌开源库捕获崩溃信息 232
12.1.1 转储文件 232
12.1.2 平台支持 233
12.1.3 工作过程 233
12.1.4 Breakpad封装 233
12.2 线上崩溃信息捕获的注意事项 243
第13章 NDK开发推荐做法( 14min) 245
13.1 数据传递 245
13.1.1 减少跨层传递次数 245
13.1.2 减少数据转换 245
13.1.3 设计高效接口 246
13.1.4 综合考虑性能和资源管理 246
13.1.5 尽量避免跨层异步通信 246
13.2 JNI线程使用时的注意事项 246
13.3 JNI接口开发建议 246
13.4 动态库瘦身 247
参考文献 248
VI
VII
|
內容試閱:
|
随着互联网技术的不断发展,移动端技术日新月异,尤其是在Android开发领域。从最早的Java开发到现在的Kotlin流行,再到NDK(Native Development Kit)在高性能需求场景中的广泛应用,Android开发领域经历了巨大的变革。
笔者从业互联网多年,亲眼见证了移动端技术的发展历程。目前,NDK作为Android开发中不可或缺的一部分,其生态系统日趋完善,越来越多的公司和个人开发者在利用NDK的强大功能提升应用性能和用户体验。NDK使开发者可以使用C和C 编写高效的代码,尤其在游戏开发、音视频处理等领域展现了强大的优势。
本书旨在系统地介绍NDK开发的完整学习路径,帮助读者从基础入门,逐步深入到实际应用。通过本书,读者可以全面掌握NDK的核心概念、编译方法、库的使用及开发调试技巧。书中不仅涵盖了NDK的基础知识和开发环境的搭建,还通过丰富的案例和代码示例,详细地讲解了NDK在实际项目中的应用。
本书的基础篇将带领读者从NDK的基本概念、JNI的基础知识开始,逐步深入到动态库和静态库的使用场景、交叉编译、CMake的使用等。我们将通过实战案例,展示如何在Android Studio中集成NDK环境,如何使用CMake进行项目管理,以及如何在实际开发中处理复杂的数据类型和函数调用。
本书的实战篇选取了Opus和Breakpad开源库作为案例,通过详尽的代码讲解和实战演练,帮助读者掌握NDK在大数据传输和音视频处理中的实际应用技巧。此外,本书还介绍了如何在Android Studio中进行Native代码的调试和问题跟踪,帮助开发者快速地定位和解决开发中的难题。
通过编写本书,笔者总结了多年的开发经验,并查阅了大量官方文档和技术资料。希望本书能帮助读者在NDK学习和开发的道路上少走弯路,提升技术水平,实现职业发展。愿本书成为开发者在NDK开发中的良师益友,帮助开发者开发出更加高效和优质的Android 应用。
本书主要内容
第1章主要介绍了NDK的基础概念、学习方法、编译基础及CMake的基础概念,并解释了选择CMake的原因。
第2章主要讲述了如何在不同场景下搭建NDK开发环境,包括工具链的介绍和安装、Ubuntu虚拟机的安装及独立NDK环境的配置。
第3章主要介绍了NDK的实际开发场景,包括使用集成开发环境进行源码集成、命令行预编译、预编译库在IDE中的集成方式及开源代码FFmpeg的交叉编译案例。
第4章主要讲解了CMake的基础使用、基本语法、调试方法及多模块使用案例。
第5章主要介绍了NDK开发中的基本数据类型、引用数据类型,以及C/C 语言下引用类型的说明和常用数据类型操作函数的使用。
第6章主要解析了NDK开发中的核心知识点,包括JavaVM、JNIEnv、全局引用和局部引用及JNI中的特殊函数。
第7章主要介绍了NDK开发的关键函数,涵盖了函数操作的基础知识及如何调用Java端的成员函数和静态函数。
第8章主要探讨了NDK中静态函数和动态函数的注册方式,详细地比较了两种注册方式的使用场景和优缺点。
第9章主要讲解了NDK开发中大数据量传输的关键知识点,包括DirectByteBuffer的介绍、如何使用DirectByteBuffer在Java和Native之间传输大数据及其使用场景。
第10章通过一个实战案例,主要介绍了如何使用开源库opus开发一款局域网PTT语音通话应用。该章节结合了前面所学的知识点,帮助读者加深理解。
第11章主要讲述了NDK调试的基础知识,包括如何使用集成开发环境调试Native代码。掌握调试技巧不仅可以快速地定位问题,还能通过调试快速地熟悉程序的运行逻辑。
第12章主要介绍了如何使用谷歌开源库捕获Native崩溃信息,通过编译和封装Breakpad开源库,加深对所学知识的理解。同时,介绍了线上捕获Native崩溃信息的原理及如何使用addr2line快速地定位崩溃位置的方法。
第13章主要分享了NDK开发中的一些最佳实践,帮助读者了解如何有效地降低在实际开发中出现问题的概率,提高开发效率和代码质量。
阅读建议
本书是一本基础入门、项目实战及原理剖析三位一体的技术教程,既包括详细的基础知识介绍,又提供了丰富的实际项目开发案例,每个代码片段都有详细的注释和操作说明。本书的基础知识、项目实战及原理剖析部分均提供了完整可运行的代码示例,帮助读者更好地自学全方位的技术体系。
建议没有NDK实际开发经验的读者从头开始,按照顺序详细地阅读每个章节。章节划分完全遵循线性思维,由浅入深、由易到难地介绍NDK开发及相关技术,严格按照顺序阅读可以帮助读者避免出现知识断层。
有NDK开发经验的读者可以快速地浏览第1章和第2章,从第3章开始进入研读状态。从第3章起将介绍NDK在实际开发中的应用场景和技术细节,包括源码集成、预编译库的使用及开源代码的交叉编译案例。由于在实际项目中涉及从头搭建项目的情况较少,所以这部分内容可以帮助读者补充开发场景中的空白部分。
第4章在第3章的基础上进一步地介绍了CMake的使用方法和多模块管理,完全性方面符合企业级项目的开发流程和标准。在阅读第4章时,可按照书中的步骤仔细编码,结合步骤示例代码的注释和文字说明,帮助读者避免运行错误。
第5章到第7章详细地介绍了NDK开发中的核心知识点和关键函数,包括数据类型操作、JNI的使用及函数调用。这部分内容深入地解析了NDK的核心技术,建议读者多做练习,通过实践加深理解。
第8章讲述了NDK中静态函数和动态函数的注册方式及其优缺点,这部分内容对于优化NDK开发中的函数注册和调用至关重要。
第9章和第10章为实战篇,通过实际案例介绍了NDK在大数据传输和音视频处理中的应用。建议读者在阅读这些章节时,结合前面所学知识进行综合应用,进一步地提升自己的开发技能。
第11章到第13章介绍了NDK开发中的调试技巧、崩溃信息捕获及最佳实践。这部分内容非常重要,可以帮助读者在开发过程中快速地定位和解决问题,提高开发效率和代码 质量。
通过系统学习本书内容,读者将能够全面掌握NDK开发的各方面,提升自己的技术水平,开发出高性能、高质量的Android应用程序。祝各位读者学习愉快,开发顺利!
资源下载提示
素材(源码)等资源:扫描目录上方的二维码下载。
视频等资源:扫描封底的文泉云盘防盗码,再扫描书中相应章节的二维码,可以在线学习。
致谢
感谢我的家人及朋友们在写作过程中给予的大力支持,使我能够更专注地向读者展示相关知识。
由于时间仓促,书中难免存在不足之处,敬请读者见谅,并欢迎提出宝贵意见。
蒋 超 ?
2025年1月
II
III
|
|