Xamarin应用技术问询:如何打印VS日志及获取离线设备第三方库日志
关于Xamarin Android日志问题的实用解决方案
问题1:能否在Xamarin应用中打印Visual Studio日志?
哈哈,这个表述有点搞反啦——Visual Studio是用来接收设备端日志的工具,不是让应用去打印VS的日志哦。如果你的意思是想把设备上产生的日志(包括你用Console.WriteLine输出的、第三方库输出的)在VS里查看,那这本来就是调试时的默认功能,只要设备连PC并开启调试,VS控制台就能实时显示这些日志。
问题2:未连接PC时获取设备会话日志并发送至PC
针对你说的「没连PC时没法访问设备日志,又不能自己写文件存日志」的情况,给你几个适配Galaxy Tab S2(Android 7.0)的可行方案:
方案1:用Android Logcat事后导出日志
Android系统自带的Logcat会记录设备上所有应用的日志(包括第三方库输出的内容),哪怕没连PC,你也可以先在设备上操作,事后导出到PC:
- 先在设备上开启开发者选项:打开「设置」→「关于设备」→连续点击版本号直到提示开启,然后打开「USB调试」
- 启动你的应用,完成需要测试的操作后,把设备连到PC
- 打开电脑的命令提示符(CMD)或终端,执行命令:
这个命令会把设备当前的所有日志导出到PC的adb logcat -d > app_logs.txtapp_logs.txt文件里。如果你只想导出自己应用的日志,可以加过滤参数:
这样就只会获取你应用进程下的所有日志,包括第三方库输出的内容。adb logcat -d -s 你的应用包名
方案2:无线调试实现实时日志传输
如果想不插USB也能实时把日志传到VS控制台,可以用Android的无线调试功能:
- 确保设备和PC在同一个WiFi局域网内
- 先把设备通过USB连到PC,执行命令:
adb tcpip 5555 - 拔掉USB线,在PC上执行:
(设备IP可以在「设置」→「关于设备」→「状态」里找到)adb connect 设备的IP地址:5555
连接成功后,VS的控制台就会像USB连接时一样,实时接收设备的日志了,包括Console.WriteLine和第三方库的输出。
方案3:统一用Android Log类输出(若允许调整代码)
虽然你说没法自行写入文件,但很多第三方库其实是用Android.Util.Log类输出日志的,你自己的代码也可以改用这个类替代Console.WriteLine,比如:
Android.Util.Log.Info("YourAppTag", "调试信息内容");
这样所有日志都会被Logcat捕获,不管连不连PC都能事后导出。如果想实时传日志到PC,无线调试方案就完全能满足需求啦。
内容的提问来源于stack exchange,提问作者Gabriel Weidmann
相关产品推荐
相关产品推荐

