2016-12-07 76 views
4

我有一个通过.SO文件使用一些本地库的应用程序。Android NDK:覆盖本地库的动态链接?

我在一个情况下,我不能上传应用程序的新版本谷歌玩,因为那些本地库链接到旧版本的OpenSSL和libpng的具有安全漏洞如下所述:https://android-developers.blogspot.com.eg/2016/06/android-changes-for-ndk-developers.html

我的问题是:是否有任何方法将.SO文件包含在新项目中,以及新版本的OpenSSL和LibPNG,并重写与旧版本的OpenSSL和LibPNG的链接?

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

有没有解决这个问题的方法?

+0

*有什么办法可以包含.SO *,只要你的库不使用动态openssl/libpng库,那么你不能 – Selvin

+0

对不起,但你能解释更多吗? –

+0

更多然后**你不能**?...考虑[静态编译库](https://en.wikipedia.org/wiki/Static_library)作为程序本身的一部分...你没有如果您使用OpenSSL和LibPNG作为动态库或静态库,则不会写入 – Selvin

回答

1

如果您失去对库源代码的访问权限,但拥有.o文件(或.a压缩文件),则可以选择不同版本的依赖项。

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

所有这些只有在您用于这些库的接口保持不变时才能正常工作。