我有一个通过 .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/