【Android 高性能音频】Oboe 开发流程 ( 导入 Oboe 库 | 使用预构建的二进制库和头文件 | 编译 Oboe 源码 )
文章目錄
- 一、導入 Oboe 庫
- 二、使用預構建的二進制庫和頭文件
- 三、編譯 Oboe 源代碼
Oboe GitHub 主頁 : GitHub/Oboe
-
① 簡單使用 : Getting Started
-
② Oboe 全指南 : Full Guide To Oboe
-
③ Oboe API 參考 : API reference
-
④ Android 音頻框架發展 : Android audio history
一、導入 Oboe 庫
Google 官方提供了兩種導入 Oboe 庫的方式 :
- ① 預構建二進制庫 : 使用 預構建的二進制庫和頭文件 ;
- ② 編譯源碼 : 直接 添加 Oboe 源碼到工程中 , 在 Android Studio 中編譯 Oboe 源碼 ;
Oboe 導入庫方案適用場景 :
-
使用穩定功能 : 如果只想要 使用穩定版本的 Oboe 函數庫 , 使用方案 ① ;
-
調試修改代碼 : 如果想要 調試修改 Oboe 源代碼 , 使用方案 ② ;
二、使用預構建的二進制庫和頭文件
前提條件 :
-
函數庫發布形式 : Oboe 作為 Prefab 包 , 在 Google Maven 中發布 ;
-
開發環境要求 : 如果要支持 Prefab , 需要的 Android Studio 開發環境的最低版本為 Android Studio 4.1 ;
-
Android Studio 版本 : 4.1
- Gradle 版本 : 6.6.1
- Gradle 插件版本 : 4.1.0
參考配置 : 【錯誤記錄】Android Studio 中 build.gradle 配置 buildFeatures prefab 錯誤處理 ( AS 4.1 以上開發環境 | Gradle及插件版本 )
Prefab 是用于 預編譯 C/C++ 函數庫 , 生成構建系統集成的工具 ;
Prefab 包中含有 少量的元數據 , 以及描述的預構建的函數庫 ;
參考 : GitHub/Prefab
在 Module 下的 build.gradle 中進行如下配置 :
① 添加依賴 :
dependencies {implementation 'com.google.oboe:oboe:1.4.3' }② 設置 Prefab 開啟 :
android {buildFeatures {prefab true} }③ 配置應用使用共享模板庫 :
android { defaultConfig { externalNativeBuild {cmake {arguments "-DANDROID_STL=c++_shared"}}} }在 CMakeLists.txt 中進行如下配置 :
find_package (oboe REQUIRED CONFIG) # 查找 Oboe 函數庫 target_link_libraries(app oboe::oboe) # 連接函數庫 , app 就是 Native 層編譯的動態庫 , 給 Java 層使用的使用上述配置 , AS 4.1 , Gradle 6.6.1 , Gradle Plugin 4.1.0 , 即可編譯通過 , 有任意一個版本低了 , 都會編譯失敗 ;
三、編譯 Oboe 源代碼
Google 官方示例 hello-oboe 就是使用這種方法 , 直接將 Oboe 源碼放在應用中編譯 ;
下載最新的發布版本的 Oboe 源代碼 , 下載地址 https://github.com/google/oboe/releases/ ;
將其放在指定的目錄中 , 并記錄該目錄路徑 ; 推薦將源碼放在 cpp 源碼路徑下 ;
編輯 CMakeLists.txt 構建腳本 :
① 設置 Oboe 源代碼路徑 : 這里 假設 Oboe 源代碼在 CMakeLists.txt 構建腳本相同層級目錄中 , 該操作相當于 設置了一個變量 ;
set (OBOE_DIR ./oboe)② 將 Oboe 源碼目錄設置為工程的子路徑 : add_subdirectory 告訴 CMake 到 OBOE_DIR 路徑中查找該路徑下的 CMakeLists.txt 構建腳本 , 編譯該構建腳本中指定的源碼 , ./oboe 指定的是編譯后的二進制文件存放位置 ;
add_subdirectory (${OBOE_DIR} ./oboe)③ 指定 Oboe 源碼的頭文件路徑 : 允許本次 CMake 編譯的目標庫中可以包含 Oboe 源碼頭文件 , 進而訪問 Oboe API ;
include_directories (${OBOE_DIR}/include)完整 CMakeLists.txt 構建腳本示例 :
cmake_minimum_required(VERSION 3.4.1)# 1. 編譯本應用中的 C++ 源碼 add_library (native-lib SHARED native-lib.cpp )# 2. 設置 Oboe 源代碼路徑 , 這里假設 Oboe 源代碼在 CMakeLists.txt 構建腳本相同層級目錄中 , 該操作相當于設置了一個變量 set (OBOE_DIR ./oboe) # 3. 將 Oboe 源碼目錄設置為工程的子路徑 , # add_subdirectory 告訴 CMake 到 OBOE_DIR 路徑中查找該路徑下的 CMakeLists.txt 構建腳本 , # 編譯該構建腳本中指定的源碼 , # ./oboe 指定的是編譯后的二進制文件存放位置 ; add_subdirectory (${OBOE_DIR} ./oboe)# 4. 指定 Oboe 源碼的頭文件路徑 # 允許本次 CMake 編譯的目標庫中可以包含 Oboe 源碼頭文件 , 進而訪問 Oboe API include_directories (${OBOE_DIR}/include)# 5. 鏈接函數庫 , native-lib 是本應用中編譯的動態庫 , 這里鏈接 log 日志庫 , oboe 高性能音頻庫 # 該 oboe 函數庫就是上面 add_subdirectory 操作編譯的 target_link_libraries (native-lib log oboe)總結
以上是生活随笔為你收集整理的【Android 高性能音频】Oboe 开发流程 ( 导入 Oboe 库 | 使用预构建的二进制库和头文件 | 编译 Oboe 源码 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【集合论】Stirling 子集数 (
- 下一篇: 【集合论】序关系 ( 偏序集元素之间的关