由于工作需要,需要在framework中增加自己的动态库,并且动态库需要使用合作方提供的第三方静态库。但是在引入静态库编译动态库时总是提示失败。具体如下:
1. 文件列表
说明: Android.mk是编译配置文件,test.cpp是编译动态库的源文件,内容很简单,就是一个函数里面分别调用静态库中的函数。本例的主要目的是验证动态库引用第三方库的方法,具体库函数的功能基本忽略。 third_lib.a是第三方静态库文件; third_lib.h是第三方静态库输出函数的头文件
2.可以通过命令 mn -s third_lib.a来查看静态库的大致情况:
3.可以看出,静态库的源文件也叫test, 它提供了两个函数xdcodec_encode1和xdcodec_encode_init1。
4.再来看一下编译配置文件的内容:
可以看出这个配置文件的内容主要分为两部分,第一部分预编译静态库,这一过程不触发构建过程,仅仅是重起了个名字,并且将该库拷贝到某个路径下(具体可以参看另一篇文章,NDK使用二进制库的方法);第二部分是用于编译动态本地库,可以看出它通过LOCAL_STATIC_LIBRARIES关键字引入了之前预编译的静态库。