引用第三方的so文件很简单,在工程目录的libs文件夹下新建文件夹armeabi,以及armeabi-v7a,然后将要引用的so文件分别复制到这两个

文件夹下就行了。但是有时候我们会使用第三方开源算法,或者本地的底层代码,那么在调用这些代码的接口时就需要将这些代码编译成so

文件,如果你使用的是cygwin事先将这些代码编译成so文件,然后将其复制到相应文件下那么不会有什么问题,但是如果使用的是android

自带的编译工具NDK进行编译时,armeabi以及armeabi-v7a文件夹下的第三方so文件将会被删除,只会产生编译后的so文件,其他的so文

件将无法引入,现在我们就来解决:在需要引入第三方的so文件的情况下,怎样使用NDK编译本地代码。

一、新建jni文件夹,将你要编译源码文件以及需要引入的so文件复制到jni文件目录下

二、编写android.mk文件,首先将你的将你的本地代码文件的android.mk部分的代码写好,然后在这部分后面添加需要引入的so文件的代码

如:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := libspeexLOCAL_CFLAGS = -DFIXED_POINT -DUSE_KISS_FFT -DEXPORT="" -UHAVE_CONFIG_HLOCAL_C_INCLUDES := $(LOCAL_PATH)/includeLOCAL_SRC_FILES := speex.cppinclude $(BUILD_SHARED_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := liblocSDK3LOCAL_SRC_FILES := liblocSDK3.soinclude $(PREBUILT_SHARED_LIBRARY)

我们编写了本地的speex.cpp文件,但是还需要引入百度的定位SDK的so文件,首先我们编写speex.cpp文件的android.mk部分,然后在其

后添加上第三方so文件引入的android.mk部分。

include $(CLEAR_VARS)LOCAL_MODULE := liblocSDK3LOCAL_SRC_FILES := liblocSDK3.soinclude $(PREBUILT_SHARED_LIBRARY)
以上部分就是百度定位sdk的so文件引入时的android.mk部分的编写,如果你还需要其他的so文件呢,你只需要在这部分的后面再加上这样

的代码,然后将名字替换成那个so文件的名即可。

编写好了之后,我们编译工程,最后我们会在armeabi等文件夹中,看到两个so文件,libspeex.so以及liblocSDK3.so文件,如果你是直接

将需要引入的so文件导入到armeabi文件夹下,那么编译后你将只会看见libspeex.so文件。

参考链接:

http://blog.csdn.net/zhandoushi1982/article/details/5316669

http://blog.csdn.net/ly131420/article/details/9619269


更多相关文章

  1. Android实现增量更新
  2. 如何在Android中使用汇编语言
  3. android 逆向工程
  4. Android推送通知的实现--通过 WebSphere MQ 遥测传输 (MQTT) 将
  5. Android中怎么破解游戏之修改金币数
  6. ANDROID Bionic C DOCS
  7. Symbian学习笔记(8):再尝试着做一个数独游戏
  8. 【android】如何有效的减少重复的代码
  9. android 4.0以上WebView不能全屏播放视频的解决办法

随机推荐

  1. android系统服务大全
  2. 《Android(安卓)9编程通俗演义》代码下载
  3. Jazelle DBX对Android是无用的
  4. Android提高二十一篇
  5. 收藏android源码项目
  6. Android(安卓)内存监测工具 DDMS --> Hea
  7. 【Android】getColor(int id)在API23时过
  8. Android(安卓)Handler 深入学习(2)
  9. Android(安卓)自定义时间选择对话框
  10. INSTALL_FAILED_MISSING_SHARED_LIBRARY