我想知道现在更新的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,它起作用了(!)。
提前致谢!
答案 0 :(得分:6)
虽然官方的NDK-r9d文档仍然说明相同,但事实证明LD_PRELOAD确实可以在root设备上运行。 运行
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/
答案 1 :(得分:0)
一般来说,LD_LIBRARY_PATH
已经在工程构建(a.k.a. rooted devices)上工作了很长一段时间。问题是这对生产构建没有帮助 - 不是因为加载器已更改,而是因为应用程序的环境是安全的。