Android Studio 導(dǎo)入第三方 C/C++庫

前提說明:

本文以導(dǎo)入 騰訊 IM SDK C++ 為例

庫地址:

IM SDK C++下載鏈接:https://github.com/TencentCloud/TIMSDK/tree/master/Android/IMSDK

image.png

一:C/C++庫導(dǎo)入

二:CMakeLists.txt 文件配置

1. 設(shè)置目標(biāo)庫

# 添加項目
project("imdemo")

# 添加目標(biāo)庫
add_library(
        imdemo #設(shè)置庫名稱

        SHARED #設(shè)置庫為共享庫

        native-lib.cpp # 添加.cpp源文件
)

注:imdemo 要與 System.loadLibrary("imdemo"); 名稱一致

2. 添加庫頭文件

# 添加依賴頭文件路徑:直接填 文件夾名稱就行
include_directories( include )

3. 添加第三方庫

#導(dǎo)入第三方動態(tài)庫
add_library(imsdk SHARED IMPORTED)

4. 設(shè)置第三方庫所在位置

#設(shè)置第三方庫所在位置
set_target_properties(
        imsdk
        PROPERTIES IMPORTED_LOCATION
        # {CMAKE_SOURCE_DIR} 這個地址對應(yīng)的是 CMakeList.txt 地址,也就是:.../工程名/app/src/main/cpp/捺球,我們需要定位到include文件夾下脚祟,所以得改成:${CMAKE_SOURCE_DIR}/../jniLibs
        #/${ANDROID_ABI}表示處理器架構(gòu) 第三方庫必須存放在這類路徑下
        # 路徑一定要設(shè)置正確胶背,不然會報依賴錯誤(注:一定要仔細(xì)臭笆、一定要仔細(xì)、一定要仔細(xì))
        ${CMAKE_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/libImSDK.so
)

5. 將第三方庫與目標(biāo)庫進(jìn)行關(guān)聯(lián)

target_link_libraries( # Specifies the target library.
        imdemo

        ${log-lib}

        # 將第三方庫與目標(biāo)庫進(jìn)行關(guān)聯(lián)
        imsdk
)

三:bulid.gradle 配置

android->defaultConfig下 指定 ndk 架構(gòu)吊骤,防止不兼容

defaultConfig {
        ...
        // 指定要ndk需要兼容的架構(gòu)(這樣其他依賴包里mips,x86,"armeabi-v7a",arm-v8之類的so會被過濾掉)
        ndk {
            abiFilters  "armeabi-v7a", "arm64-v8a"  
        }

    }

運(yùn)行時缆娃,如果有遇到庫沖突問題粪躬,需要在 android->defaultConfig添加如下配置

    defaultConfig {
       ...

        // 指定要ndk需要兼容的架構(gòu)(這樣其他依賴包里mips,x86,"armeabi-v7a",arm-v8之類的so會被過濾掉)
        ndk {
            abiFilters  "armeabi-v7a", "arm64-v8a" 
        }
        //不加這個會導(dǎo)致多個so沖突:https://developer.android.com/r/tools/jniLibs-vs-imported-targets
        sourceSets {
            main {
                // The libs directory contains prebuilt libraries that are used by the
                // app's library defined in CMakeLists.txt via an IMPORTED target.
                jniLibs.srcDirs = ['libs']
            }
        }
    }

--------至此已完成導(dǎo)入,后面可以不用在意殿托。只是將 CMakeLists.txt 配置改成"通配樣式"--------

# 設(shè)置 cmake 版本
cmake_minimum_required(VERSION 3.18.1)

# 設(shè)置項目名稱
project("objName")

# 設(shè)置.cpp 原文件統(tǒng)一管理變量 src-files
file(GLOB src-files
        ${CMAKE_SOURCE_DIR}/*.cpp # 原文件通配路徑
        ${CMAKE_SOURCE_DIR}/folder/*.cpp # 原文件通配路徑
        )

#添加目標(biāo)庫
add_library(objName SHARED
        ${src-files})

# 導(dǎo)入頭文件
include_directories(include)

# 默認(rèn)自帶
find_library(log-lib log)

# 添加第三方庫(xxxx表示第三方庫別名)
add_library(xxxx SHARED IMPORTED )

# 設(shè)置 so庫路徑通用變量 jnilibs
set(jnilibs "${CMAKE_SOURCE_DIR}/../jniLibs")

# 設(shè)置第三方庫對應(yīng)的所在位置(xxxx表示第三方庫別名)
set_target_properties(xxxx PROPERTIES IMPORTED_LOCATION ${jnilibs}/${ANDROID_ABI}/libImSDK.so)

# 設(shè)置第三方庫統(tǒng)一管理變量 third-party-libs (xxxx表示第三方庫別名)
set(third-party-libs
        xxxx
        )

# 將目標(biāo)庫與第三方庫關(guān)聯(lián)
target_link_libraries(
        imndkdemo
        ${log-lib}
        ${third-party-libs}
)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末霹菊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子支竹,更是在濱河造成了極大的恐慌旋廷,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件礼搁,死亡現(xiàn)場離奇詭異饶碘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)馒吴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門扎运,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人饮戳,你說我怎么就攤上這事豪治。” “怎么了扯罐?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵负拟,是天一觀的道長。 經(jīng)常有香客問我歹河,道長掩浙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任秸歧,我火速辦了婚禮厨姚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寥茫。我一直安慰自己遣蚀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著芭梯,像睡著了一般险耀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上玖喘,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天甩牺,我揣著相機(jī)與錄音,去河邊找鬼累奈。 笑死贬派,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的澎媒。 我是一名探鬼主播搞乏,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼戒努!你這毒婦竟也來了请敦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤储玫,失蹤者是張志新(化名)和其女友劉穎侍筛,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撒穷,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匣椰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了端礼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禽笑。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖齐媒,靈堂內(nèi)的尸體忽然破棺而出蒲每,到底是詐尸還是另有隱情,我是刑警寧澤喻括,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布邀杏,位于F島的核電站,受9級特大地震影響唬血,放射性物質(zhì)發(fā)生泄漏望蜡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一拷恨、第九天 我趴在偏房一處隱蔽的房頂上張望脖律。 院中可真熱鬧,春花似錦腕侄、人聲如沸小泉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽微姊。三九已至酸茴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兢交,已是汗流浹背薪捍。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留配喳,地道東北人酪穿。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像晴裹,于是被迫代替她去往敵國和親被济。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容