3

我想知道较新的 Android 版本现在是否支持 LD_PRELOAD?

在 4.0 ICS 的时候它不是,并且在文档(NDK docs/SYSTEM-ISSUES.html)中仍然有:

No support for LD_LIBRARY_PATH, LD_PRELOAD, RTLD_LOCAL and many other options.

但是几天前,我在我的 Android 4.2 Galaxy Nexus 上使用了 LD_LIBRARY_PATH 并且它有效(!)。

提前致谢!

4

2 回答 2

6

虽然官方的 NDK-r9d 文档仍然这么说,但事实证明 LD_PRELOAD 确实适用于有根设备。跑

adb shell
setprop wrap.com.xyz.yourapp LD_PRELOAD=/path/to/your/library.so
stop
start

将库推送到设备后。我在 ANDROID-19 模拟器上成功尝试了它以提供函数的替代定义。

查看此链接 - http://cedricvb.be/post/intercepting-android-native-library-calls/

于 2014-06-05T18:30:55.217 回答
0

一般来说,LD_LIBRARY_PATH他已经在工程构建(又名 root 设备)上工作了很长一段时间。问题是这对生产构建没有帮助——不是因为加载器改变了,而是因为你的应用程序的环境是安全的。

于 2013-01-20T16:29:11.313 回答