安卓添加第三方lib库

第一次接触到安卓中调用动态库的内容,花了很多时间。这边整理一下

第三方库是某公司提供的,包括.a文件、头文件、config、一份简单说明以及一份samplecode。我需要在安卓源代码中调用其中的函数进行处理 。

先是找安卓源代码中的位置,因为不熟悉,又花了点时间去熟悉结构。

然后是测试库是否成功包含进去,就是在源代码中调用一个简单函数测试一下。建文件夹,写Android.mk。因为最后使用的是动态库,所以要将静态库加入到最后的动态库中去。静态库copy到out目录下,很简单,一个prebuilt。但是这边我遇到问题,使用BUILD_MULTI_PREBUILT的时候,自动将静态库copy到了obj下,但是接下来引用的时候,报错:obj_arm中找不到静态库。一开始就怀疑是平台编译选项的问题,大概就是由于64位支持。但是无论我加LOCAL_MULTIBLIB:=32还是LOCAL_32_BIT_ONLY:= true都不管用,我以为无关64bit支持而是arm和x86的问题。结果找了一整天,都没有发现有什么。只是知道目标平台应该是TARGET_2ND_ARCH,而我现在生成的静态库目标是TARGET_ARCH。又不方便修改multi_prebuilt.mk。

最后还是请教了一下,安分的手动用BUILD_PREBUILT而不是BUILD_MULTI_PREBUILT,这样做很烦。说实话和我心中的理念是冲突的,作为一个程序员,要能懒则懒。但是————,算了吧,我还是先把任务完成再研究为毛 multi_prebuilt.mk跟我过不去吧。

这样,在要使用的地方的Android.mk中编译shared libraries的地方加入静态库的内容,就把静态库链接进去了。然后函数调用成功。 

posted @ 2015-03-12 17:28  曾经善良  阅读(2907)  评论(0编辑  收藏  举报