android 依赖外部库的编译方法

来源:互联网 发布:谷歌地图js api接口 编辑:程序博客网 时间:2024/06/06 03:54

  如果我们需要用到第三方提供的动态库,需要先使用预编译,把第三方的动态库安装到libs目录,然后在需要调用的文件的Android.mk里使用

LOCAL_SHARED_LIBRARIES += 来链接这些动态库。

实施步骤:

1.在jni下新建一个文件夹,把第三方动态库放进去,并添加Android.mk,形如以下:

include $(CLEAR_VARS)
LOCAL_MODULE := xxx1
LOCAL_SRC_FILES := libs/libxxx1.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := xxx2
LOCAL_SRC_FILES := libs/libxxx2.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := xxx3
LOCAL_SRC_FILES := libs/libxxx3.so
include $(PREBUILT_SHARED_LIBRARY)

 

2.如果在mycode.c调用第三方库函数,则在编译mycode.c时加入依赖,形如以下:

LOCAL_SHARED_LIBRARIES +=  \

libxxx1 \

libxxx2

libxxx3

 

后记

有一次使用第三方库,在cygwin下编译出现下面的错误:

D:/software/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/.                                             ./lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot                                              open ./obj/local/armeabi-v7a/libxxx1.so: Permission denied
D:/software/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/.                                             ./lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot                                              open ./obj/local/armeabi-v7a/libxxx2.so: Permission denied
D:/software/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/.                                             ./lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot                                              open ./obj/local/armeabi-v7a/libxxx3.so: Permission denied

collect2: ld returned 1 exit status
/cygdrive/d/software/android/android-ndk-r8e/build/core/build-binary.mk:450: recipe for target                                              `obj/local/armeabi-v7a/liblinphone.so' failed
make: *** [obj/local/armeabi-v7a/liblinphone.so] Error 1

 

解决办法:错误是权限问题,于是使用chmod 777 libxxx1.so,修改libxxx1.so、libxxx2.so、libxxx3.so即可。

0 0
原创粉丝点击