Android JNI中C代码的printf()输出去向问题
Android JNI中printf输出的位置及查看方法
在Android平台上,Native层(C/C++)的printf输出不会直接显示在App界面,默认会被重定向到**系统日志(Logcat)**中,你可以通过以下方式查看:
使用Android Studio Logcat面板
- 连接测试设备或启动模拟器,打开Android Studio的Logcat窗口
- 可以通过搜索关键词
Sum =快速定位输出,或者过滤日志标签DEBUG(大部分情况下printf输出会被归类到这个标签下)
使用adb命令行查看
- 在终端执行命令:
adb logcat | grep "Sum ="
该命令会过滤出包含
Sum =的日志行,直接显示你的printf输出。- 在终端执行命令:
更规范的Native日志方案
如果想更方便地管理Native日志,推荐使用Android提供的Native日志函数替代printf,步骤如下:
- 引入日志头文件并定义日志宏:
#include <android/log.h> #define LOG_TAG "JNI_CALC" #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) - 将sum函数中的
printf替换为LOGD:int sum(int a, int b) { int sum_val = a + b; LOGD("Sum = %d", sum_val); return sum_val; } - 在Logcat中通过
LOG_TAG(这里是JNI_CALC)过滤日志,能更精准地找到你的Native输出。
内容的提问来源于stack exchange,提问作者Enrico Migliore
相关产品推荐
相关产品推荐

