昨天晚上到今天一直在折腾这个第三方库文件,唉,要哭了,一直就是各种问题。现在详细说说怎么做,踩过哪些坑。
现有个第三方的C++动态库(libModel.so),这个libModel.so是要能被android调用的arm库啊,需要在android中,使用java直接调用,那么一般是两种方式:
1:libModel.so 符合JNI规范,能够直接在java层调用
2:libModel.so不符合规范,只是普通的c++动态库,那么只能是在JNI,写个c/c++函数,调用这个libModel.so库里面的函数,然后重新编译为libhello.so库,android调用这个libModel.so;其实就像给libModel.so再封装一层。
由于libModel.so不符合JNI规范,我只能采用第二种方式。
首先,创建一个HelloTest的android程序,然后在HelloTest中新建一个jni文件,在jni文件中仔创建一个prebuilt文件夹,里面存放libmodel.so,并且新建一个Android.mk。
Android.mk的内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := model
LOCAL_SRC_FILES := libModel.so
include $(PREBUILT_SHARED_LIBRARY)