您的位置:首页 > 移动开发 > Android开发

android ndk 怎样调用第三方的so库文件

2014-01-08 14:35 417 查看

android ndk 怎样调用第三方的so库文件

背景:编译一个test可执行文件,这个文件用到了libpoint.so(自己编译的)。同时libpoint.so依赖于libxml.so,而libxml.so又依赖于libiconv.so。好了,开始蛋疼的编译。用cygwin在win7下编译首先是jni目录的结构

Android.mk文件内容
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := \
test.c
LOCAL_SHARED_LIBRARIES := point xml iconv
LOCAL_LDLIBS :=-llog
LOCAL_MODULE:=test
include $(BUILD_EXECUTABLE)
include $(LOCAL_PATH)/prebuilt/Android.mkprebuild目录

include目录就是用到的.h文件xml目录是依赖的libxml.so库文件Android.mk内容
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := point
LOCAL_SRC_FILES := libpoint.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)
include $(LOCAL_PATH)/xml/Android.mk
xml目录

到这里基本就能看出规律了,这里的Android.mk内容和上层的基本相同,如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := xml
LOCAL_SRC_FILES := libxml.so
include $(PREBUILT_SHARED_LIBRARY)
include $(LOCAL_PATH)/iconv/Android.mk
#libxml.so libiconv.soiconv目录:

Android.mk内容
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := iconv
LOCAL_SRC_FILES := libiconv.so
include $(PREBUILT_SHARED_LIBRARY)
#libxml.so libiconv.so
有上边可以看到,依赖无非就是一层层的加上去。在编译的过程,可能遇到如下的错误

可以看到是权限错误(permission dendied),只要找到相关目录,chmod即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android ndk 调用