安卓NDK : override dynamic linking for native libraries?

标签 android android-ndk openssl libpng android-security

我有一个通过 .SO 文件使用一些 native 库的应用程序。

我处于无法将新版本的应用程序上传到 Google Play 的情况,因为这些 native 库链接到旧版本的 OpenSSL 和 LibPNG,它们具有此处所述的安全漏洞:https://android-developers.blogspot.com.eg/2016/06/android-changes-for-ndk-developers.html

我的问题是:有什么方法可以将 .SO 文件连同新版本的 OpenSSL 和 LibPNG 一起包含在新项目中,并覆盖与旧版本 OpenSSL 和 LibPNG 的链接吗?

知道我无法重建 .SO 文件,因为我没有源文件。

是否有解决此问题的解决方法?

最佳答案

如果您无法访问您的库的源代码,但有 .o 文件(或 .a 存档),您可以选择不同版本的依赖关系。

如果您使用 OpenSSL 和 libPNG 作为动态库,您的生活会更轻松。如果你将它们静态链接到你的 .so 文件中,你需要一些 advanced ELF manipulation techniques如果您幸运且有决心,这可能会有所帮助。

所有这些只有在您使用这些库的接口(interface)保持不变的情况下才能起作用。

关于安卓NDK : override dynamic linking for native libraries?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41017405/

相关文章:

android - Dagger - 类没有可注入(inject)成员

android - 如何在 Android NDK 项目中使用预编译头文件?

ssl - 我如何使用 OpenSSL

python - SNI(服务器名称指示)与 Tornado

java - 如何将当前 Activity 传递给服务?

java - Android Studio 1.0 编译错误 - 沿边缘不能有多个标记区域

android - net::ERR_FILE_NOT_FOUND file:///android_asset/www/index.html 找不到

android - 使用 NDK 编译 C++ 原生 Activity

android-ndk - 如何解决Android NDK中的java.lang.UnsatisfiedLinkError?

google-chrome - Chrome 61 中拒绝的客户端证书