IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android logs 分析 :机智云SDK Logs 分析教程 -> 正文阅读

[移动开发]Android logs 分析 :机智云SDK Logs 分析教程

一,概述
?

机智云的SDK日志中包含了大量的信息,极大的方便开发者定位问题,但很多开发者都看不懂这些日志,因此该份教程讲述如何从SDK的日志中找到自己需要的信息以及定位问题。
该份文档的阅读前提是开发者已经具备获取Android日志的条件和能力,并且已经熟悉机智云SDK相关使用方法。如不具备这些前提,请先参考网络上的相关资料。
二,设置SDK级别
要查看SDK的日志,首先需要调用SDK设置日志级别的方法,将其设为所有级别,以及设置在后台输出二进制数据。
调用方法:
XPGWifiSDK.setLogLevel(XPGWifiLogLevel logLevel, String logFile, boolean bPrintDataInDebug);
参数说明:

?

三,过滤日志
SDK的日志主要有两个“TAG”,一个是“xpgc”,一个是“XPGWifiSDK”。一般情况下,LogCat的Log Tag 设置为“xpg”即可。
如图:

?

“xpgc”代表该日志属于SDK底层逻辑所打印的日志。
“XPGWifiSDK”代表该日志属于SDK外部公共接口所打印的日志。
如图:






四,日志分析

?

?

SDK在执行每一步操作的时候,都会打印出相关信息,具体信息课参考如下说明:
云端请求
SDK里包含的大量的云端交互操作,其中与云端交互部分,会以“W”(警告)级别打印,在Eclipse的Log Cat中会以橘黄色来标记。如下图:

?

该日志包含了请求的相关信息,如请求的Header以及Body。

其中Header包含了AppID以及Token等比较重要的信息,App发布的时候请注意关闭日志输出。

SDK内部使用的网络接口都是使用机智云OpenAPI的相关接口,接口的详情可参考官网的文档。
根据该日志,可以看出发出自己的接口调用是否正确,例如缺少token或者缺少AppID等;同时也可以判断自己的网络质量,是否发起请求以后长时间未收到云端回复。

一些常见的问题分析会在该文档后面再详细描述。
云端响应
SDK发起请求后,在网络正常的情况下,SDK会收到云端的响应,响应结果也会打印在日志中。如图:

?

具体的reponse会以“W”级别标出。上图是获取账号下绑定的设备的请求响应。一般情况下,开发者无需理会具体的网络请求和响应,SDK会自行处理并作出回调。只有在网络情况不好的情况下,开发者才需要从日志中分析网络请求是否正常。
发现设备
SDK发现本地设备的过程实际上是UDP的收发过程。SDK会往路由器发送一个UDP广播,烧写了机智云模块的设备在收到改广播后,会回复一个响应帧到SDK端。具体的过程可由下图看出来:

?

“xpgBroadcast(),port = 12414”该日志说明SDK向路由器的12414端口发送了一个UDP广播,具体的指令内容可参考协议文档。如果发送成功,SDK会打印“udp package send success”。
当设备收到了指定的UDP广播以后,会回复相关响应帧,该响应帧包含了设备的Productkey、Did、IP地址、MAC地址等信息。具体的指令内容可参考协议文档。
SDK收到设备的回复以后,会回调didDiscoverd接口。
从该日志可以看出SDK发出广播后,是否有设备回复。如果没有收到回复,说明有几点原因:
  • 本地没有设备
  • 路由器不支持UDP广播
  • 可根据实际情况定位问题和解决问题。
小循环登录设备
小循环登录即是手机与设备在同一路由器内,通过设备IP建立TCP连接。登录的过程如下图:

?

由图中的“Connected to server 192.168.1.102:12416”可以看出SDK发起的是小循环登录,连接的是设备的IP地址,端口号为12416。

登录成功后,SDK内部会打印“OnLogin(int): 0”,返回值0说明登录成功了,会回调“didLogin”接口通知UI进行处理。
通过该日志,可以判断设备是进行大循环还是小循环连接,并且可以看出连接成功或者失败,以及失败的原因。具体失败的原因会在本文档后面进一步描述。
大循环登录设备
大循环登录即是手机与设备不在同一路由器(网段)内,通过机智云云端建立MQTT连接。登录的过程如下图:

?

由图中的“Connected to server m2m.gizwits.com:1883”可以看出SDK发起的是大循环登录,连接的是机智云云端域名地址,端口号为1883。

登录成功后,SDK内部会打印“OnLogin(int): 0”,返回值0说明登录成功了,会回调“didLogin”接口通知UI进行处理。
通过该日志,可以判断设备是进行大循环还是小循环连接,并且可以看出连接成功或者失败,以及失败的原因。具体失败的原因会在本文档后面进一步描述。
小循环收发指令
小循环发送指令通过TCP/IP进行收发。开发者调用SDK方法,传入JSON格式的指令,由SDK内部解析成为二进制指令,并发送给设备。设备收到后做出状态改变,按照机智云串口协议要求,把自己的状态用二进制指令返回,SDK收到后再封装为JSON格式,回调给相关接口。详见下图:

?

其中“writePi()”说明是通过IP的方式发送的指令,也即是小循环发送。
通过该日志,可以看出二进制指令是否按照协议文档收发,是否能正常解析为JSON格式,解析的JSON格式是否正确。具体的分析过程会在本文档后面进一步描述。
收发指令详解
SDK收发指令的过程,均在SDK中打印显示,App的调试,也可以从日志中获得大量很有用的信息。一个收发指令的过程如下图:

?

一次指令的收发,具体经过了以下几个步骤:
1.调用SDK的“write()”方法发送JSON指令
如上图日志中的JSON指令,包含了“fan_speed”这个数据点。通过该日志,可以看出发送的JSON格式是否正确,数据点是否正确,数据点的key跟value是不是目标数据。
2.SDK把JSON指令解析为原始业务指令
“writeP0()”代表了SDK把JSON格式的指令解析为二进制指令,下面会打印出字节格式的指令。
3.SDK把二进制指令小循环发往设备或大循环发往云端
“writePm()”代表了SDK加入了机智云协议的包头后把指令发往云端。
如果是“writePi()”,则说明是小循环发送指令。
通过该日志,可以看出当前发送的指令属于大循环还是属于小循环。
4.SDK接收到本地或云端的二进制指令
“readPm()”代表了SDK接收到了云端返回的二进制指令,如果是”readPi()”,则说明SDK接收到了本地设备返回的二进制指令。
通过该日志,可以看出当前接收的指令属于大循环还是属于小循环。
5.SDK把二进制指令去除包头后变为原始业务指令
如果SDK接收到了云端的指令,会去除机智云协议的包头,保留原始的字节业务指令并打印在控制台中。
6.SDK把原始业务指令封装为JSON格式
SDK获取到二进制指令后会根据自动加载的配置文件解析为JSON格式指令。如上图的“receive data”中打印出的JSON指令。通过该日志,可以看出解析是否正常以及具体每个数据点的key和value。
7.SDK把JSON格式指令通过接口回调给UI层
SDK解析结束后会通过回调接口把数据回调到UI层,TAG为“XPGWiFiSDK”,接口名一般是”did”开头,例如图中的”didReceiveData”。
通过该日志可以看出SDK是否已经成功调用了回调接口,以及调用的回调接口具体的接口名。
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 11:02:31  更:2021-07-14 11:04:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 5:13:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码