Android静态库合并问题及解决办法

2021-02-28  本文已影响0人  禄眠

简介

最近在静态库合并上也踩坑了,真是头疼

存在的问题

合并库有两种方式:libtoolar,但是libtool一直合并失败

所以这里使用ar来合并

通常做法就是ar -xar -qc,但是因为涉及到合并交叉编译的库,所以这个ar命令一定不要用系统自带的,要使用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中编译时却出错了:

error: undefined reference to 'xxx'
... ...

就很难受,还好找到了解决办法

解决办法

使用mri脚本进行合并操作

  1. 创建mri脚本

    create libnew.a
    addlib libx.a
    addlib liby.a
    save
    end
    

    保存为combine.mri

  2. 执行脚本

    android-ndk-r20b/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ar -M <libaz.mri
    

这样就能够正常调用了

ar合并静态库

如果有什么问题或建议,欢迎留言~

上一篇下一篇

猜你喜欢

热点阅读