Android studio cMake 使用詳解
阿新 • • 發佈:2019-02-18
本人最近在學習ndk 開發,由於用慣了AS 之後不想再去試用Eclipse 所以最近一個人再折騰 使用Android Studio 進行NDK 開發(使用ffmpeg進行練手)
由於是一個人自己再折騰,再加上白天也比較忙,晚上還經常加班 折騰了好久才搞明白
廢話不多說 開始NDK 流程
一.建立一個NDK 工程
這一部其實非常簡單,只需要在android studio 中 下載NDK 然後在新建專案的時候 勾選c++選項即可
二.NDK 主要部分分析
使用android studio 建立好NDK 工程之後 會發現NDK 工程主要有三部分組成
如圖所示: NDK專案相對於 一般的工程而言 多瞭如上三個部分
1. .externalNativeBuild 該部分是使用cMake 編譯成so庫部分 該部分內容為自動生成 在實際專案中 不會過多的操作該部分
2. cpp 該部分是生成了一個cpp檔案目錄 用於存放c/c++程式碼
3.CMakeLists.txt 該部分是cMake的指令碼配置部分 需要在這裡進行相應的配置
出了上圖所示內容外 gradle 也多了一小部分內容 如下圖所示:
三配置CMakeLists.txt
其實 配置該檔案比較簡單 主要的配置有 三個方面
1.常規 (系統自帶部分)
cmake_minimum_required(VERSION 3.4.1) find_library( log-lib log )
這兩部分 第一行是 設定cmake的最低版本 第二部分是 cmake自帶庫
2加入c++部分
該部分分為兩種 1.引用外部so庫 2.引用本地c/c++程式碼
add_library( avutil-54 SHARED IMPORTED ) set_target_properties( avutil-54 PROPERTIES IMPORTED_LOCATION ../../../../libs/armeabi/libavutil-54.so )
改圖為引用外部so庫
add_library( native-lib SHARED src/main/cpp/native-lib.cpp )改圖為引用本地c++程式碼
3.本地c++程式碼關聯 和 外部so 庫 引入標頭檔案
include_directories(libs/include) target_link_libraries( native-lib swresample-1 avcodec-56 avfilter-5 swscale-3 avdevice-56 avformat-56 ${log-lib} )
四 編寫本地c++ 程式碼
該部分 略。。。
五 打包apk
略。。