2016-12-07 59 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這可能會幫助,如果你是幸運和確定。

所有這些只有在您用於這些庫的接口保持不變時才能正常工作。