簡介
最近在靜態(tài)庫合并上也踩坑了糙俗,真是頭疼
存在的問題
合并庫有兩種方式:libtool
和ar
,但是libtool
一直合并失敗
所以這里使用ar
來合并
通常做法就是ar -x
和ar -qc
赊颠,但是因?yàn)樯婕暗胶喜⒔徊婢幾g的庫劈彪,所以這個(gè)ar
命令一定不要用系統(tǒng)自帶的,要使用ndk
里的ar
就像下面這樣:
android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -x libx.a
android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -x liby.a
android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -qc libnew.a *.o
就跟解壓縮差不多
但是等合并完放到Android Studio
中編譯時(shí)卻出錯了:
error: undefined reference to 'xxx'
... ...
就很難受痘括,還好找到了解決辦法
解決辦法
使用mri
腳本進(jìn)行合并操作
-
創(chuàng)建
mri
腳本create libnew.a addlib libx.a addlib liby.a save end
保存為
combine.mri
-
執(zhí)行腳本
android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -M <libaz.mri
這樣就能夠正常調(diào)用了
如果有什么問題或建議纲菌,歡迎留言~