android中JNI利用第三方的so库

在做android开发中,经常会用到第三方的so库,而这些库的代码是保密的,只提供.h头文件给你调用.

因不懂makefile,所有走了很多弯路。在此记录下,这种用法。


在这里假设别人提供了 abc.so 和 def.so库这2个已经编译好的库文件,和abc.h头文件。

首先,在eclipse里面项目中新建一个jni文件夹,再建一个子文件夹:prebuilt

把abc.so和def.so复制进prebuilt文件夹中。

然后,在prebuilt文件中,新建Android.mk文件,这个文件会在编译时,自动复制到obj/local/armeabi/目录下,内容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := abc
LOCAL_SRC_FILES := abc.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := svnssl
LOCAL_SRC_FILES := libsvnssl.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := def
LOCAL_SRC_FILES := def.so
include $(PREBUILT_SHARED_LIBRARY)
再之后,便是在jni目录下,编写代码,引用abc.h这个头文件,实现需求的功能模块。这里假设实现代码为ffabc.c

接着在jni目录下,编写Android.mk文件,以实现编译,内容如下:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
    ffabc.c
LOCAL_MODULE:=ffabc
LOCAL_SHARED_LIBRARIES += abc
LOCAL_SHARED_LIBRARIES += def
LOCAL_LDLIBS+=-llog

include $(BUILD_SHARED_LIBRARY)
include $(LOCAL_PATH)/prebuilt/Android.mk

接着,编译后,便可以在libs/armeabi/目录下看到libabc.so,libdef.so和libffabc.so这三个文件了。

至于怎么用,就不啰嗦了。网上大把大把的教程,搜索jni就有。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值