Android +JNI 之动态库+静态库
这个的内容我以ndk下面的sample---twolib为例子,这个是ndk自带的例子,
首先呢先把这个这个例子拷贝到其他路径上来,然后我们可以先测试一下,ndk-build,发现在obj目录下面静态库和动态库都有生成,而在libs目录下面只有一个so文件,这篇文章,我主要以修改为主,接下来,我要修改Android。Mk文件了,
LOCAL_PATH:= $(call my-dir)
# first lib, which will be builtstatically
#
#include $(CLEAR_VARS)
#LOCAL_MODULE := libtwolib-first
#LOCAL_SRC_FILES := first.c
#include $(BUILD_STATIC_LIBRARY)
# second lib, which will depend on andinclude the first one
#
include $(CLEAR_VARS)
LOCAL_MODULE := libtwolib-second
LOCAL_SRC_FILES := second.c
LOCAL_STATIC_LIBRARIES :=libtwolib-first
include $(BUILD_SHARED_LIBRARY)
可以看到这里面我主要把first那个部分的编译部门给注释掉了(要先运行一遍得到first。A文件哦)
然后运行,结果发现了错误,主要是因为LOCAL_STATIC_LIBRARIES:= libtwolib-first 这个语句错了,这里的原因是路径错误,于是我们修改路径:
首先,我们要把那个静态库移动到jni文件目录下,然后添加一句
LOCAL_LDFLAGS =$(LOCAL_PATH)/libtwolib-first.a(把LOCAL_STATIC_LIBRARIES这句注释掉),然后再编译,结果通过了。
做这个的目的呢,就是要把openssl静态库编到自己的动态库里面来,我下面再说把。