太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

南方吳彥祖_藍斯發表於2020-10-22

前言

同NDK技術的淵源始於3年前,使用 so檔案的時候瞭解到NDK技術,並且C語言一直是強項,就鼓搗起NDK開發。在 AndroidStduio還沒推廣的年代,基於 eclipse搭建NDK開發環境需要安全依賴開發工具,並且除錯起來具備難度。隨後 AndroidStudio也先後支援 nkd-buildcmake使用NDK開發。

什麼是NDK

Android NDK 是一組允許您將 C 或 C++(“原生程式碼”)嵌入到 Android 應用中的工具。

在 Android 應用中使用原生程式碼的應用場景

  • 在平臺之間移植其應用
  • 重複使用現有庫,或者提供其自己的庫供重複使用
  • 在某些情況下提高效能,特別是像遊戲這種計算密集型應用

在日常App開發中,難免有些功能是需要藉助NDK來完成的,比如現在常見的音影片處理等,今天就以ffmpeg入手,來學習下Android NDK開發的套路。

今天, 高能的地方來了!大廠內部出品的“AndroidNDK 模組開發寶典”分享給大家,從原理到實戰,一應俱全!這份寶典主要涉及以下幾個方面:

  • NDK 模組開發
  • JNI 模組
  • Native 開發工具
  • Linux 程式設計
  • 底層圖片處理
  • 音影片開發
  • 機器學習
太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

NDK 模組開發

主要內容:

  • C++與 C#資料型別總結
  • C 與 C++之記憶體結構與管理
  • C 與 C++之預處理命令與用 typedef 命名已有型別
  • C 與 C++之結構體、共用體
  • C 與 C++之指標
  • C/C++ 之多執行緒機制
  • C/C++ 之函式與初始化列表
太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

JNI 模組

主要內容:

  • JNI 開發之 靜態註冊與動態註冊

靜態註冊、動態註冊、JNINativeMethod、資料型別對映、jni 函式預設引數

  • JNI 開發之方法簽名與 Java 通訊

Android NDK 開發 JNI 型別簽名和方法簽名、JNI 實現 java 與 c/c++相互通訊

  • JNI 開發之區域性引用、全域性引用和弱全域性引用
太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

Native 開發工具

主要內容:

  • 編譯器、打包工具與分析器

十大最受歡迎的 React Native 應用開發編輯器、react-native 打包流程

  • 靜態庫與動態庫

  • CPU 架構與注意事項

ABI 管理、處理 CPU 功能、NEON 支援

  • 構建指令碼與構建工具

環境搭建、NDK 專案、Cmake、Makefile

  • 交叉編譯移植

FFmpeg 編譯、FFmpeg+LIBX264+FACC 交叉編譯 實現 264 流錄製、移植 FFmpeg 在 arm 交叉編譯時遇到的問題、FFmpeg 交叉編譯、X264 FAAC 交叉編譯、解決所有移植問題

  • AS 構建 NDK 專案

配置 NDK 環境、建立 app 專案、生成.h 標頭檔案、建立 C 檔案,實現 native 方法、jni.h 檔案

太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

Linux 程式設計

  • Linux 環境搭建,系統管理,許可權系統和工具使用(vim 等)

Linux 環境的搭建、Linux 系統管理操作(25 個命令)

  • Shell 指令碼程式設計

Shell 指令碼、編寫簡單 Shell 指令碼、流程控制語句、計劃任務服務程式

太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

底層圖片處理

  • PNG/JPEG/WEBP 影像處理與壓縮

四種圖片格式、推薦幾種圖片處理網站、squoosh 線上無損圖片壓縮工具,JPG/webP/PNG/ 互轉

  • 微信圖片壓縮

計算原始寬高、計算近似寬高、第一次取樣獲取目標圖片、迴圈逼近目標大小

  • GIF 合成原理與實現

GIF 圖片的解析、GIF 圖片的合成(序列影像合成 GIF 影像)

太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

音影片開發

  • 多媒體系統

Camera 與手機螢幕採集、影像原始資料格式 YUV420(NV21 與 YV12 等)、音訊採集與播放系統、編解碼器 MediaCodec、MediaMuxer 複用與 MediaExtractor

  • FFmpeg

ffmpeg 模組介紹、音影片解碼,音影片同步、I 幀,B 幀,P 幀解碼原理、x264 影片編碼與 faac 音訊編碼、OpenGL 繪製與 NativeWindow 繪製

  • 流媒體協議

RTMP 協議、、音視訊通話 P2P WebRtc

  • OpenGL ES 濾鏡開發之美顏效果

高斯模糊、高反差保留、強光處理、融合

  • 抖音影片效果分析與實現

流程列表、影片拍攝、影片編輯、影片匯出

  • 音影片變速原理

變速入口分析、音訊變速實現、影片變速實現

太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

機器學習

  • Opencv

  • 影像預處理

灰度化和二值化、腐蝕與膨脹、人臉檢測、身份證識別

太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

最後

由於篇幅限制,文件的詳解資料太全面,細節內容太多,所以只把部分知識點截圖出來粗略的介紹,每個小節點裡面都有更細化的內容!

Android NDK終極學習寶典

現在面試問的很多東西,都是原理。

《960全網最全Android開發筆記》

太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

《379頁Android開發面試寶典》

歷時半年,我們整理了這份市面上最全面的安卓面試題解析大全
包含了騰訊、百度、小米、阿里、樂視、美團、58、360、新浪、搜狐等一線網際網路公司面試被問到的題目。熟悉本文中列出的知識點會大大增加透過前兩輪技術面試的機率。

如何使用它?

1.可以透過目錄索引直接翻看需要的知識點,查漏補缺。
2.五角星數表示面試問到的頻率,代表重要推薦指數

太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

《507頁Android開發相關原始碼解析》

只要是程式設計師,不管是Java還是Android,如果不去閱讀原始碼,只看API文件,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。

真正最能鍛鍊能力的便是直接去閱讀原始碼,不僅限於閱讀各大系統原始碼,還包括各種優秀的開源庫。

太難了,面試因不精通音影片開發被掛,終於弄到大廠內部578頁的Android NDK學習寶典!

資料太多,全部展示會影響篇幅,暫時就先列舉這些部分截圖,以上資源均免費分享,以上內容均放在了開源專案: github  中已收錄,大家可以自行獲取。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983917/viewspace-2728788/,如需轉載,請註明出處,否則將追究法律責任。

相關文章