ndk开发指引 二次封装so库详细教程

     由于第三方提供的so库命名没有按jni的命名标准(Java_packagename_classname_method),需要对第三方库进行再次封装,使之在Android工程中可以直接进行调用

1、在此之前需要确保环境里面已经下载好已经配置好ndk开发环境,如果只下载好包没有配置好环境,
下面的引用将使用绝对路径使用。

2、在项目路径中建立jni文件夹,将自己建立的头文件、c++文件以及第三方so库放在该目录中,
注意在命名函数时要严格按照jni的标准 Java_包名_类名_方法名(eg:Java_com_my_application_util_jnitest),在头文件定义好函数名之后在 c++文件中实现,调用第三方so库的函数,


3、在jni目录下添加Android.mk、Application.mk文件,添加内容主要如下
#Android.mk
LOCAL_PATH := $(call my-dir)

#第三方的编译模块
include $(CLEAR_VARS)
LOCAL_MODULE := libsoname
LOCAL_SRC_FILES := libsoname.so
#下面是申明第三方头文件路径
LOCAL_EXPORT_C_INCLUDES := lib/include
include $(PREBUILT_SHARED_LIBRARY)

#自己的编译模块
include $(CLEAR_VARS)
LOCAL_MODULE := filter
LOCAL_SRC_FILES := lib/filter.cpp
LOCAL_LDLIBS += -L$(SYSROOT)/lib -llog
LOCAL_LDLIBS := -llog -ljnigraphics
LOCAL_CFLAGS := -g
#这里引入第三方编译模块
LOCAL_SHARED_LIBRARIES := libsoname
include $(BUILD_SHARED_LIBRARY)

#Application.mk
APP_ABI := armeabi-v7a #需要编译成适应的平台
APP_PLATFORM := android-14

4、在jni目录下打开控制台,输入ndk-build ,如果没有出错的话会生产libs目录,下面有我们需要的so库

5、在Java文件中相应的类中定义相应的方法(eg:在util类中定义方法jnitest,注意需要再方法名前加native关键字)。

6、可以在其他类中调用方法,也可以将Java文件打包成jar包,结合生产的so库一起拷贝的其他项目,供其他项目使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值