NDK開發與實踐(入門篇·微課視頻版)

蔣超

  • 出版商: 清華大學
  • 出版日期: 2025-04-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • ISBN: 7302683034
  • ISBN-13: 9787302683032
  • 下單後立即進貨 (約4週~6週)

  • NDK開發與實踐(入門篇·微課視頻版)-preview-1
  • NDK開發與實踐(入門篇·微課視頻版)-preview-2
  • NDK開發與實踐(入門篇·微課視頻版)-preview-3
NDK開發與實踐(入門篇·微課視頻版)-preview-1

商品描述

"本書旨在通過深入的理論與豐富的實戰案例,引領讀者系統學習NDK開發技術。NDK技術以其高安全性、卓越性能和高度復用性,成為現代應用開發的關鍵技術之一。本書從基本概念出發,全面介紹了NDK開發所需的核心基礎知識,並詳細講解瞭如何從零開始構建一個完整的NDK項目,以及如何利用集成開發環境高效地進行NDK項目的調試與優化。書中不僅涵蓋了當前主流的開發技術和**實踐,更通過理論與實戰相結合的教學模式,讓讀者能夠迅速將所學知識應用於實際工作中,提高開發效率,打造出更優質的應用產品。 本書共13章,分為基礎篇和實戰篇。基礎篇(第1~8章)詳細講述NDK開發理論基礎及環境搭建相關知識。從NDK基礎概念到交叉編譯原理、CMake基本語法的使用,逐步深入到NDK實戰項目的運用;實戰篇(第9~13章)利用入門基礎篇所學內容搭建一個完整的NDK實戰項目。本書示例代碼豐富,實際性和系統性較強,並配有視頻講解,助力讀者透徹理解書中的重點、難點。 本書既適合初學者入門,精心設計的案例對於工作多年的開發者也有參考價值,並可作為高等院校和培訓機構相關專業的教學參考書。 "

目錄大綱

  

  

  

  

       

教學課件(PPT)    本書源碼??????

  

基  礎  篇

第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