set_target_properties( # Specifies the target library. imported-lib # Specifies the parameter you want to define. PROPERTIES IMPORTED_LOCATION # Provides the path to the library you want to import. imported-lib/src/${ANDROID_ABI}/libimported-lib.so )
以 CMake 為例:
由於預編譯函式庫是已經建置好的,你想就要使用 IMPORTED 標誌去告訴 CMake ,你只需要將其導入到你的專案中即可:
然後你需要使用
set_target_properties()
指令去指定函式庫的路徑,就像下面的程式碼一樣。為了讓 CMake 在編譯期間能找到你的頭文件,你需要使用 include_directories() 指令,並且將你的頭文件地址傳進去:
在 CMake 建置腳本中使用
target_link_libraries()
指令,將預先建置庫與你本機程式庫相關聯:當你建立你的 APP 的時候,Gradle 會自動將匯入的函式庫打包到你的 APK 中。你可以使用 APK Analyzer 來檢查。
但是如果能得到源碼的話,我不推薦你鏈接.so,因為可能會與特定平台不相容。如在Linux平台上編譯的.so動態函式庫在 arm 平台(如 Android)上無法運作。
參考:
在 Android Studio 2.2 中愉快地使用 C/C++
Relocations in generic ELF (EM: 62) 錯誤的解決方案