请问 Android 如何打印出 so 内部的 log

2017-09-30 10:54:14 +08:00
 miaoxia

客户提供了一个 c 编译的 so 文件
里面很多 printf 打印的 log
现在已经可以调用 so 里面的函数,如何把 so 里面的 log 打印到 android 的 logcat 中?
注:不是使用 ndk 打印 log:)
谢谢大家 🙏🙏

4473 次点击
所在节点    程序员
6 条回复
nicevar
2017-09-30 11:20:34 +08:00
你别逗我,给 android 用的 so 没用__android_log_print ? printf 函数在 android 的 jni 下无效的,怎么会有输出?
bluefalconjun
2017-09-30 11:45:53 +08:00
printf 如果直接调用了 bionic 倒是有希望打印出来的吧?
感觉是不是只能把这个调用 so 的程序(apk? java service? native service?)做一个重定向?
然后输出到 logd 里面.

奇葩需求... 让他给你重新编一个吧...
woodfish
2017-09-30 13:05:05 +08:00
stdout 重定向到一个 pipe, 读取 pipe 然后用 logcat 输出
http://www.sisik.eu/blog/embedding-node-into-android-app 有大致方法
miaoxia
2017-09-30 15:20:04 +08:00
@nicevar
@bluefalconjun
谢谢回复 最终还是问客户要了源码
自己写__android_log_print 了
miaoxia
2017-09-30 15:20:35 +08:00
@woodfish 谢谢回复
回头研究下这个方式
感谢~ 预祝中秋快乐:)
afpro
2017-09-30 20:35:05 +08:00
gcc link 的时候可以指定一个方法重新实现 我记得 -Wl,-wrap,printf

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/394805

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX