V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
miaoxia
V2EX  ›  程序员

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

  •  
  •   miaoxia · 2017-09-30 10:54:14 +08:00 · 4297 次点击
    这是一个创建于 2371 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    奇葩需求... 让他给你重新编一个吧...
    woodfish
        3
    woodfish  
       2017-09-30 13:05:05 +08:00   ❤️ 1
    stdout 重定向到一个 pipe, 读取 pipe 然后用 logcat 输出
    http://www.sisik.eu/blog/embedding-node-into-android-app 有大致方法
    miaoxia
        4
    miaoxia  
    OP
       2017-09-30 15:20:04 +08:00
    @nicevar
    @bluefalconjun
    谢谢回复 最终还是问客户要了源码
    自己写__android_log_print 了
    miaoxia
        5
    miaoxia  
    OP
       2017-09-30 15:20:35 +08:00
    @woodfish 谢谢回复
    回头研究下这个方式
    感谢~ 预祝中秋快乐:)
    afpro
        6
    afpro  
       2017-09-30 20:35:05 +08:00
    gcc link 的时候可以指定一个方法重新实现 我记得 -Wl,-wrap,printf
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5361 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:14 · PVG 17:14 · LAX 02:14 · JFK 05:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.