我正在为我的应用程序使用 CSipSimple 代码。但不幸的是,Google Playstore 已发出警告: 您使用的是易受攻击的 OpenSSL 版本
我想从现有代码更新 OpenSSL 版本。
这是我遵循的一些参考。CSipSimple-OpenSSL 但我被困在第 5 步没有这样的命令
m:找不到命令
我是否遵循不正确的步骤?如果有人已经这样做了,请帮助我或提供一些步骤/链接。
任何帮助将非常感激
我正在为我的应用程序使用 CSipSimple 代码。但不幸的是,Google Playstore 已发出警告: 您使用的是易受攻击的 OpenSSL 版本
我想从现有代码更新 OpenSSL 版本。
这是我遵循的一些参考。CSipSimple-OpenSSL 但我被困在第 5 步没有这样的命令
m:找不到命令
我是否遵循不正确的步骤?如果有人已经这样做了,请帮助我或提供一些步骤/链接。
任何帮助将非常感激
如果有人遇到在其中一个本地库中使用易受攻击版本的 OpenSSL 的问题,我会为 @Nonos 解决方案添加更多详细信息和说明。本教程适用于 CSipSimple,但构建 OpenSSL 静态库是一种更通用的解决方案。
我推荐第二种解决方案,因为添加静态 OpenSSL 库是更简单的解决方案。
前提条件:需要先配置Android NDK。
setenv-android-mod.sh
->18
与ndk版本一致setenv-android-mod.sh
->40
与 Android API 版本一致build-all-arch.sh
使用 OpenSSL 库的文件夹名称修改-> 第 7 行(在我的情况下是openssl-1.0.1t
)dist
将显示库csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/lib
openssl-1.0.1{version}/include
到csipsimple/CSipSimple-trunk/CSipSimple/jni/openssl/include
. 请注意,某些头文件是指向其他文件的符号链接。OpenSSL
必须CSipSimple
使用相同的 Android API 版本进行编译。制作步骤后应该可以成功构建。
mm 用于 make 模块,这在 Android 源项目构建中可用,因此您需要设置一个构建环境,在提供的模块中是Android 平台上的 OpenSSL(从中获取您引用的自述文件) . 建立一个构建环境至少需要一两天的时间,所以我不推荐它,除非你出于不同的原因已经拥有它。此外,Android 在其最新版本中放弃了对 OpenSSL 的支持,并且正在使用 BoringSSL。据我所知,在这里实现您想要的最佳方式是按照 open ssl wiki上的指南从源代码交叉编译和构建 OpenSSL ,创建 .a 文件并在您的应用程序中静态引用它们。这也是推荐的方式以避免在 N 和更高版本上引用系统库。
编辑:要将库作为预构建的静态库添加到我的项目中,我在我的 jni 目录下创建了一个 openssl 文件夹,其中包含 lib/(其中包含我支持的架构的 .a 文件),include/ 具有必要的包含(您可以在你下载的openssl版本下找到)和Android.mk,其中包含以下内容:
include $(CLEAR_VARS)
LOCAL_MODULE := libssl
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libssl.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libcrypto
LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libcrypto.a
include $(PREBUILT_STATIC_LIBRARY)
然后,为了在另一个 jni 模块中使用该库,我将以下内容添加到其 Android.mk 文件中:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../openssl/include
LOCAL_STATIC_LIBRARIES := libssl libcrypto
这也与此处所做的类似,只是不建议使用非openssl 源提供的.a 文件。