在android jni编程时,编译时默认会先清空libs/armeabi目录,所以不能直接把第三方动态库放在armeabi目录中。
要解决这个问题只需在jni目录新建一个prebuilt目录并把需要引用的so放入其中,然后在libs/android.mk中做如下修改(以百度地图api的so为例):
include $(CLEAR_VARS)
LOCAL_SRC_FILES := prebuilt/liblocSDK4b.so
LOCAL_MODULE := locSDK4b
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := prebuilt/libBaiduMapSDK_v2_4_0.so
LOCAL_MODULE := BaiduMapSDK_v2_4_0
include $(PREBUILT_SHARED_LIBRARY)
即可编译成功。
其间如遇到编译后libs目录中的so文件只有2k或者大大小于原先的so文件,则清空obj文件夹后重新编译即可。
本文介绍在Android JNI编程中如何正确引入第三方动态库,避免编译时清空armeabi目录导致的问题,并提供了解决方案及具体步骤。

8578

被折叠的 条评论
为什么被折叠?



