NDK開(kāi)發(fā)工程目錄和配置

NDK開(kāi)發(fā)工程目錄和配置

文件目錄

工程目錄

C/C++文件存放目錄

  1. 存放C++ 文件 放入main目錄下的cpp即可(默認(rèn))

Workspace\app\src\main\cpp

  1. 指向自定義目錄(android{}節(jié)點(diǎn)下)
    //文件映射關(guān)系
    sourceSets {
        main {//表示為main
            jni.srcDirs =["src/main/cpp"] 
        }
    }

so 文件存放目錄

  1. 存放so文件,直接在main目錄下 創(chuàng)建jniLibs即可(默認(rèn))

Workspace\app\src\main\jniLibs
Workspace\app\src\main\jniLibs\arm64-v8a // arm64-v8a 目錄
Workspace\app\src\main\jniLibs\armeabi-v7a //armeabi-v7a 目錄
Workspace\app\src\main\jniLibs\x86 //x86 目錄
Workspace\app\src\main\jniLibs\x86_64 //x86_64 目錄

  1. jniLibs指向已經(jīng)其他目錄(android{}節(jié)點(diǎn)下)
    //文件映射關(guān)系
    sourceSets {
        main {//表示為main
            jniLibs.srcDirs = ['libs'] //so文件的目錄指向libs文件夾
        }
    }

gradle配置

配置輸出的.so架構(gòu)類(lèi)型

  1. 可以通過(guò)app下的build.gradle來(lái)指定編譯的.so類(lèi)型
  2. 現(xiàn)在只有四種,其他類(lèi)型都已舍棄'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                abiFilters  'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
            }
        }
    }

CMakeLists路徑配置

  1. 配置CMakeLists 通過(guò)app下的build.gradle來(lái)指定路徑
android {
       externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
            version "3.10.2"
        }
    }
    }

CMake 配置

  1. 打印日志message("hello world") message("SRC_LIST is " ${SRC_LIST}) 打印的日志在project\app.cxx\cmake\debug\arm64-v8a\build_output.txt 中查看

  2. 編譯頭文件 include_directories(include)

  3. 定義全局變量 FILE(GLOB SRC_LIST "${PROJECT_SOURCE_DIR}/*.cpp") 褂傀, 將當(dāng)前目錄下的所有cpp 文件賦值給SRC_LIST 可指定文件 也可以指定目錄

  4. 定義全局變量 aux_source_directory(${PROJECT_SOURCE_DIR}/ SRC_LIST) 將當(dāng)前目錄下的所有文件賦值給SRC_LIST 只可指定目錄

  5. 添加動(dòng)態(tài)鏈接庫(kù)

    • 外部導(dǎo)入的庫(kù)
      add_library(libopus SHARED IMPORTED)

    • 生成動(dòng)態(tài)庫(kù) libnative-lib.so
      add_library(native-lib SHARED native-lib.cpp)

  6. 設(shè)置動(dòng)態(tài)庫(kù)so文件路徑

set_target_properties(libopus PROPERTIES IMPORTED_LOCATION 
       ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libopus.so)
  1. 添加靜態(tài)庫(kù) add_library(mod2 STATIC mod2.c) # 生成靜態(tài)庫(kù) libmod2.a
  2. 將目標(biāo)文件與庫(kù)文件進(jìn)行鏈接
target_link_libraries(
       native-lib
       libopus
       ${log-lib})

示例

//CMakeLists.txt文件
cmake_minimum_required(VERSION 3.4.1)


include_directories(include)

aux_source_directory(${PROJECT_SOURCE_DIR}/ SRC_LIST)

FILE(GLOB SRC_LIST "${PROJECT_SOURCE_DIR}/*.cpp")

message("SRC_LIST is " ${SRC_LIST})
message("hello world")

add_library(libopus
        SHARED
        IMPORTED)

set_target_properties(libopus
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libopus.so)

add_library(
        native-lib
        SHARED
        native-lib.cpp)

find_library(
        log-lib
        log)

target_link_libraries(
        native-lib
        libopus
        ${log-lib})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锈麸,一起剝皮案震驚了整個(gè)濱河市尿这,隨后出現(xiàn)的幾起案子撞羽,更是在濱河造成了極大的恐慌认罩,老刑警劉巖稠歉,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掰担,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡怒炸,警方通過(guò)查閱死者的電腦和手機(jī)带饱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阅羹,“玉大人勺疼,你說(shuō)我怎么就攤上這事∧笥悖” “怎么了执庐?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)导梆。 經(jīng)常有香客問(wèn)我轨淌,道長(zhǎng)迂烁,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任递鹉,我火速辦了婚禮盟步,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘躏结。我一直安慰自己却盘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布媳拴。 她就那樣靜靜地躺著黄橘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪禀挫。 梳的紋絲不亂的頭發(fā)上旬陡,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音语婴,去河邊找鬼。 笑死驶睦,一個(gè)胖子當(dāng)著我的面吹牛砰左,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播场航,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼缠导,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了溉痢?” 一聲冷哼從身側(cè)響起僻造,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎孩饼,沒(méi)想到半個(gè)月后髓削,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镀娶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年立膛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梯码。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宝泵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轩娶,到底是詐尸還是另有隱情儿奶,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布鳄抒,位于F島的核電站闯捎,受9級(jí)特大地震影響搅窿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隙券,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一男应、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娱仔,春花似錦沐飘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盹憎,卻和暖如春筛峭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陪每。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工影晓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檩禾。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓挂签,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親盼产。 傳聞我的和親對(duì)象是個(gè)殘疾皇子饵婆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359