最近的一个Android项目,由于跟C语言打上了交道,需要调用第三方的.so文件。关于.so 、JNI这些东西其实我还基本属于那种不熟悉甚至连了解都算不上的水平。这次我是在别人的项目上添加新功能,也就是在别人已经有armeabi、jni等这些文件夹的情况下,我再添加些.so(百度地图的libBaiduMapSDK_v3_0_0.so和liblocSDK4b.so)。上一个项目中也用过百度地图,我就按着百度给的开发指南做的,把这些.so文件和需要的.jar直接复制进libs和其目录下,然后就成功了。这次也是这么做,但一 run as 项目,发现拷贝进去的.so文件都被自动删除了,于是开始在网上搜罗信息,按照指示,果然发现了这个项目中还有jni这个文件夹,里面还有包括android.mk在内的好些文件,跟我以前自己做的项目,构成不太一样。搞了一整天,终于在这里发现了解决的办法
点击打开链接。起初还是出了些差错,原因是lib前缀的有无造成的。
1、在新建目录jni/prebuilt,添加so包
2、在原来的jni/Android.mk添加
LOCAL_PATH := $(call my-dir)
02.
03.
include $(CLEAR_VARS) 《---在这个后面田间
04.
05.
06.
include $(CLEAR_VARS)
07.
LOCAL_MODULE := mppay
08.
LOCAL_SRC_FILES := prebuilt/libmppay.so
09.
include $(PREBUILT_SHARED_LIBRARY)
10.
11.
include $(CLEAR_VARS)
12.
LOCAL_MODULE := entryex
13.
LOCAL_SRC_FILES := prebuilt/libentryex.so
14.
include $(PREBUILT_SHARED_LIBRARY)
注意:这里prebuilt/ 之后的文件名是带lib的,起初我没有带,结果还是错的。