標籤:log 介面 span play 檔案夾 方式 cto aries code
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
Android Studio中的CmakeList NDK配置