使用Delphi调用__android_log_write无Android日志输出问题求助
Delphi Android 日志无输出排查方案
1. 日志过滤规则错误
- 检查日志查看工具的过滤条件:
- 确认标签(TAG)是你代码里写的
TAG,不要误写为其他字符 - 日志级别需选择Debug或更低等级(如Verbose),因为你调用的是
ANDROID_LOG_DEBUG,若过滤级别设为Info及以上会直接屏蔽Debug级日志
- 确认标签(TAG)是你代码里写的
2. 字符串编码不兼容
Delphi默认字符串为Unicode编码,而__android_log_write要求传入UTF-8格式的C风格字符串,直接传递Delphi字符串会导致编码异常。可以通过编码转换解决:
__android_log_write(ANDROID_LOG_DEBUG, PAnsiChar(UTF8Encode('TAG')), PAnsiChar(UTF8Encode('TimerWifi')));
更简便的方式是使用Androidapi.Log中封装好的日志函数,它已自动处理编码转换:
Log.d('TAG', 'TimerWifi');
3. 调试连接异常
- 执行
adb devices命令,确认设备/模拟器与电脑的ADB连接正常 - 若连接不稳定,重启ADB服务:先执行
adb kill-server,再执行adb start-server - 可通过进程ID精准过滤日志,避免混杂其他进程输出:
adb logcat --pid=<你的APP进程ID>
4. 编译配置限制
- 确认当前编译模式为Debug,Release模式下的编译优化可能会移除日志输出逻辑
- 检查Delphi版本是否存在Android日志相关的已知bug,必要时升级到较新版本
5. 定制ROM权限限制
部分定制Android ROM会限制普通应用的日志输出,可尝试在AndroidManifest.xml中添加日志相关权限(多数场景下不需要,但可作为排查手段):
<uses-permission android:name="android.permission.WRITE_LOGS" />
内容的提问来源于stack exchange,提问作者Harvey
相关产品推荐
相关产品推荐

