1. 程式人生 > >Android studio cMake 使用詳解

Android studio cMake 使用詳解

  本人最近在學習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

略。。