Android Studio中的CmakeList NDK配置


Android Studio2.2之后直接可以在創建工程時添加NDK支持了,添加之后,main文件夾下會多出一個native-lib.cpp這個文件,如果只為了一個簡單的NDK接口,貌似這就結束了。直接在native-lib.cpp下編程即可。

  但是,如果使用第三方庫,就得重新配置了。到目前為止,網上大半文章都是.mk的配置方法,按照他們的步驟,在AS上一步一步做下去好像很難成功。

  Android Studio2.2使用Cmake作為跨平台編譯工具,創建完一個工程后,JNI的配置都由Cmake來管理,在priject文件夾下的CmakeList文件中。

CMake有一套自己的編寫規則,按照引入方式的不同,先寫兩個demo

1,native-lib文件調用第三方庫

  第三方庫是被編譯成so庫直接調用的,配置so庫的時候,對應的頭文件也要添加上

  

     #譬如加載一個FFMPEG模塊

1 include_directories(${pathToFFMPEG}/include) #添加ffmpeg對應的頭文件目錄,${pathToFFMPEG}為前面配置過的路徑,可以替換為include_directories(E:/ffmpeg/include)這種路徑格式
2 add_library( ffmpeg SHARED IMPORTED) #添加庫文件,實際上就是引入so文件,IMPORT代表從第三方引入的意思
3 set_target_properties( ffmpeg PROPERTIES IMPORTED_LOCATION ${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libffmpeg.so#這句話是ffmpeg對應的so文件,so文件是放到JNILibs這個文件夾中
4 target_link_libraries( $\{log-lib} native-lib ffmpeg)
 #為native-lib加載ffmpeg庫.

  這樣配置好就可以在native-lib里調用ffmpeg模塊了

2,自己編寫的cpp文件

#加載coreAlg核心代碼
add_library(coreAlg SHARED src/main/cpp/coreAlg.cpp )#添加庫文件,這種實際上是有AS給編譯成so文件了
target_link_libraries(native-lib ${log-lib} coreAlg)#native-lib里調用coreAlg

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM