在音視頻開發領域中,可能會涉及到服務器,客戶端多個組件開發,隨著流媒體技術日漸成熟和開源支持,服務端需求量相對較少,甚至直接接入第三方的視頻云或者語音云實作產品快速集成,而客戶端因直接與用戶打交道,變化快,需求相對多(特別是多平臺客戶端),很多產品都會涉及到PC端(windows,MAC,Linux),移動端開發(android ,ios),甚至是web端,小程式的開發,對于PC端環境,我們再熟悉不過了,無需贅述,本文將介紹android native開發環境的搭建,
一、native開發需求分析
1)音視頻絕大多數開源方案都是C/C++實作(如ffmpeg,opencv等),如要在android上將這些方案用起來,就必須實作在android的Java層呼叫c/c++庫,當然自己在Android的Java層實作一套音視頻方案也不太現實,
2)Java運行的虛擬機上,執行效率比較低,對于實時性,性能要求較高的場景還是C/C++執行效率高,通常的做法是C/C++實作演算法處理,JAVA觸發呼叫C/C++介面完成業務需求,
3)在navtive層無法呼叫andorid某些系統API,可能是權限問題或者native層沒有開放這些API,我們需要在C/C++中回呼Java的API實作某個需求,

圖1 JNI的互動方式
二、環境安裝
下載地址:https://developer.android.google.cn/studio/

圖2 Android下載界面
下載完畢,按照向導默認安裝即可,
三、環境配置
Android JNI開發需要配置SDK Manager,具體如圖操作:configure--->SDK manager,打開配置界面,

圖3 android 配置入口
1)配置SDK版本
SDK版本從Android2.1到android 9 都有相應選項,我們選擇最新的android11,API是向下兼容的(這個就是Java層開發的SDK 版本),

圖4 Android SDK的配置(一)
2.Android NDK 相關工具的配置

圖5 Android SDK的配置(二)
NDK:主要包括編譯工具鏈,包括編譯器,二進制工具,C庫,頭檔案等,搞嵌入式的朋友再熟悉不過了,在Linux下如果要交叉編譯android版本的庫也是采用NDK這里面提供的工具鏈,(Android本質就是一個嵌入式Linux,只不過google做了很多封裝和定制而已),
CMAKE:android NDK編譯所需要的編譯工具之一,在PC上,cmake我們可以耳熟能詳了,這里的cmake也是組織和管理工程編譯的,當然android也支持傳統框架中的android.mk來編譯NDK,
Platform-Tools:這里是常用的命令列工具,最常用的adb工具就在這里
Android emulator:這里是Android模擬器,如果沒有真機,可以使用模擬器除錯(可選)
四、第一個JNI程式
在圖3界面中,雙擊Create New Project---選擇Basic Activity模板---填寫工程名和路徑名,選擇語言native c/c++,即可生成最基本的一個JNI 例子,

圖6 android jni例子
如上圖6所示,生成了java層的代碼和natvie層的C++代碼,Java代碼通過JNI規范調C++代碼,此時遇到grade同步有問題,不能安裝grade distribution,如圖6所示,解決方法:手動下載gradle壓縮包,放到C:\Users\Administrator\.gradle\wrapper\dists\gradle-6.7.1-bin\bwlcbys1h7rz3272sye1xwiv6下,再次同步grade即可(或者重新打開工程),
五、編譯和運行
選擇選單:build—make proj生成的apk如下,

圖7 生成的APK
將該apk在手機上運行效果如下:

圖8 apk運行效果
以上就是本文關于native編譯環境搭建的基本介紹,后續我們進一步介紹native的除錯,jni的規范,交叉編譯Android版本的ffmpeg等等,更多更新資訊請關注微信公眾號:AV_Chat
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/287406.html
標籤:其他
