using libssl.so in native Android app

谁说我不能喝 提交于 2019-12-08 03:38:01

问题


I'm writing a native lib (mylib.so) for Android, using the NDK. Mylib.so depends on libssl.so.

The Android NDK doc tells me I shouldn't use libssl.so from system/lib, because it's not part of the stable API. Instead I should cross-compile libssl myself and add it to the NDK.

But I see that mylib.so get automatically linked with system/lib/libssl.so because the dalvik vm (which is loading mylib.so) already depends on libssl.so.

$ readelf -d /system/bin/dalvikvm | grep Shared
 0x00000001 (NEEDED)                     Shared library: [libdvm.so]
 0x00000001 (NEEDED)                     Shared library: [libssl.so]
 0x00000001 (NEEDED)                     Shared library: [libz.so]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.s
 0x00000001 (NEEDED)                     Shared library: [libm.so]

So what is the correct way to deal with this? Using system/lib/libssl.so anyway?

Thanks


回答1:


You can download it on the following site: http://www.mediafire.com/download/njyqyxu3nxm/tcpdump.zip




回答2:


It sounds like the problem might be in your Android.mk file. Assuming that you have already successfully cross-compiled the version of libssl you want into a .so file, you will want to make a new module in your Android.mk file that looks something like the following:

include $(CLEAR_VARS)
LOCAL_MODULE := libssl-prebuilt
LOCAL_SRC_FILES := libssl.so
LOCAL_EXPORT_C_INCLUDES := /path/to/the/include/files/for/libssl.so
include $(PREBUILT_SHARED_LIBRARY)

The above module adds your local pre-built version of libssl.so to your native project. If, when compiling mylib.so, you want to link in your local version of libssl.so, you must add the following entry to your mylib module.

LOCAL_SHARED_LIBRARIES := libssl-prebuilt 


来源:https://stackoverflow.com/questions/15544041/using-libssl-so-in-native-android-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!