1. 程式人生 > >Unity3d呼叫Android版so庫

Unity3d呼叫Android版so庫

C原始碼封裝Android版函式庫

工具介紹

需要Android NDK工具包,下載地址為:

https://developer.android.google.cn/ndk/downloads/index.html

下載後解壓後即可使用。

(警告: 解壓的路徑不能帶空格,最好都是英文路徑)

新增ndk-build 指令的路徑到path全域性變數中

測試安裝成功,使用CMD視窗執行ndk-build,如下圖結果說明安裝配置成功

 

程式編寫

test.h檔案內容如下:

test.cpp檔案內容如下:

編譯配置指令碼

Android NDK需要編寫兩個指令碼:Android.mk 和  Application.mk。

Application.mk的內容如下:


(注意:此檔案儘量不要改動)

Android.mk 檔案內容如下:

此檔案中的LOCAL開頭的變數都是AndroidNDK編譯時會自動使用的,每個變數的意義參見變數的命名。LOCAL_MODULE 是生成的函式庫名稱。

編譯出函式庫

在CMD中執行編譯指令結果如下:

生成的所有的不同Android平臺的函式庫路徑為:


測試編譯出的函式庫正確性:

將libtest.so 上傳到linux系統下,執行指令如下圖,表明函式庫正常。

Unity3D呼叫函式庫

Unity3D對於動態連結庫的存放位置有規則說明,將網址:

將libs目錄複製到 Assets/Plugins/Android目錄下。如果沒有目錄,手動創建出來。

(注意:層次關係一定要如上圖所示。我之前沒有建立或複製libs目錄,導致在Android系統上執行一直報錯:system.dllnotfoundexception: test)

如果配置成功,選中函式庫檔案時,會相應的展示inspector的CPU等平臺配置資訊。

函式庫呼叫測試程式碼如下: