排查字符串截断问题过程

前几天处理安卓系统相关事项时发现一个问题,高安授权已经授权过,并且成功,但是设备重启多次后,仍然会出现设备未授权字样。

 

针对这个问题展开了排查过程,首先查看开机检查设备是否授权的代码,找到导致该逻辑发生的关键性log,【adb shell】后,用【logcat】命令查看关键性log是否存在,由于验证发现,该log在触发【设备未授权】时才会打印,因此多次重启,等待发现log。

 

出现该log后,比对后续的信息,发现从文件中读取出来的信息被截断了,截断的位置为“换行”处,此处说的换行是指Linux中的【/n】。

 

接下来就该探索为何会在“换行”处截断,只能先去找以前已经移植好的安卓系统来做比对,用【hexdump】命令(其他方式也可以,就是想看看十六进制的该文件)对比查看发现,本次的授权文件比之前正常的授权文件多了两个十六进制数。

 

此时将两个授权文件拿出来放到【notepad++】中比对,可以看到如图这样的信息,说明有问题的授权文件是在windows下生成的,因此在“换行”的处理方面,与正确的授权文件(unix)有差别,window在换行方面,使用的是【/r/n】,而不是Linux中的【/n】就算换行。

 

 

综上,问题找到了,就是授权文件的格式问题,通过【notepad++】-> 【Edit】 -> 【EOL Conversion】,可以将文件格式从【windows(CR LF)】转成【Unix(LF)】,转完后问题解决。

 

posted @ 2021-07-20 14:31  J&YANG  阅读(182)  评论(0编辑  收藏  举报