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静态库编到自己的动态库里面来,我下面再说把。

本文以NDK自带的twolib样例为基础,详细解析如何在Android项目中实现动态库与静态库的编译与整合,特别关注如何将静态库如OpenSSL整合到动态库中,通过修改Android.mk文件进行实践操作。
2336

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



