美文网首页
iOS开发工具IVDevTools

iOS开发工具IVDevTools

作者: JonorZhang | 来源:发表于2021-05-14 16:46 被阅读0次

IVDevTools是什么?

IVDevTools是一款技威自研的以提高工作效率为目标的iOS端轻量级开发工具,包含环境变量和日志系统两大核心功能,拥有众多方便实用的特性。

为什么自研IVDevTools?

在IVDevTools落地之前,同学们工作情况是这样的:

  • 测试同学经常需要切换运行环境以执行测试用例,但有时候小小的改动都需要研发同学重新打包,虽不费力却很费时间;
  • 若出问题时程序处于非调试状态,即使可以看到异常现象,但无法看到程序内在运行逻辑,研发同学大多时候也无法定位问题;
  • 有些偶现问题测试同学自己都不知道怎么弄出来的,无法描述清楚,又不好复现,沟通成本和时间成本很高;
  • 程序异常时不能在手机上实时查看,想要提取数据出来分析还需要连接电脑才行,操作很不方便;
  • 由于没有完善的信息,不同组别的研发同学间可能会互踢皮球,分析靠猜想,解决靠试验,不仅浪费时间,也很难从根本上解决问题;

诸如此类问题还有很多,这里就不一一列举了,市面也上有一些解决方案,遗憾的是跟我们的整体需求不甚相符,不是体量太大,就是功能不满足。为了提高研发、测试和技术支持同学的工作效率,我们迫切需要解决上述问题,磨刀才能不误砍柴工,没有现成可用的轮子,那我们就自己造一个吧!

IVDevTools如何实现?

为提高安全性,要求该工具对小白用户不可见,高级用户可在隐秘位置触发验证口令,输入口令后开启开发者模式,之后摇一摇手机唤出显示为全局悬浮按钮的入口,点击按钮打开工具;工具最小化2秒后进入非激活状态,半透明显示并贴边收起,不会干扰正常使用应用程序;使用模块化设计,接口简单易于集成,方便不同项目重用;

解决小改动带来的频繁打包问题

对于需要频繁改动的参数,使用环境变量来动态配置,适用于切换测试环境、账户、域名、公钥、编码方式、功能开关等场景;

环境变量由关键字、别名、参数值和使能四个部分组成。关键字用来标识配置项目,同一个配置项目可以创建多个拥有不同参数值的配置方式,每个配置方式使用便于阅读的别名来区分,配置方式是否生效由使能开关控制;由于环境变量是可配置的,使得工具本身具有一定的自定义空间。

配置项融合了文本编辑和交互界面,只有研发同学给予配置说明后测试同学才知道如何配置,默认情况下是不可见的,一定程度避免了误操作;应用程序通过监听配置变更可实现热更新,避免破坏现场,同时新配置会保存到本地,避免配置丢失。

环境变量交互界面如图1所示。


图1. 环境变量交互界面
解决异常状况分析定位不便问题

日志系统是我们工作中使用频率最高的功能,日志信息又是日志系统的核心,其必须具备两个特性:首先,为了快速筛选必须足够简洁,格式要统一、描述要精炼、重要信息要突出、高频条目可折叠、避免冗余;其次,为了准确分析必须足够全面,时间要精确到毫秒、日志级别用颜色区分、动作要描述清楚、关键参数要记录完整、代码位置要精确到行、崩溃日志单独记录。
以下是截取的日志片段:

11:28:07.885 [SDK] CH4 rcv user data {length=17, bytes=0xffffff88 00020900 00300000 a065c463 01} L106
11:28:07.928 [SDK] CH4 vi_dec i:0x117088000(2793) o:0x106066cf8(101084432) pts:67290200000 L1169
11:28:07.949 [SDK] [W]⚠️ CH4 vdec:h265 failed, expected 640x360 pts:67290266000 [IVH265Codec.m:248 ]
11:28:07.976 [SDK] CH4 vi_ren pts:67290200000 (+67290200000) remain:133000 L761
11:28:07.976 [SDK] [I]💙 CH4 IVMonitorPlayer(0x11d4f2d00) status.Playing $7W67W5G28Z869_0:1 L204
11:28:08.137 [SDK] CH4 au_ren pts:67290552214 (+352214) remain:107164 size:170 L579
11:28:08.609 [SDK] {...5} CH4 vi_ren no frame L757
11:28:08.925 [SDK] {...17} CH4 vi_rcv pts:67291333000 (+67000) len:138 L1032
11:28:09.907 [SDK] [E]💔 消息响应超时 errorCode:21002 msgid:1071830038 devid:$7W67W5G28Z869 raw:{length=51, bytes=0x00100000 6a4afa57...} rsp:2 [IVMessageQueue.m:101 _cleanupMessageTable]

除了日志信息本身,我们还为日志系统增加了一些额外的功能特性:

  • 为了方便在非调试状态下跟踪问题,增加了实时显示日志信息的半透明悬浮窗,其透明度、位置、大小、刷新等可自由调节;
  • 为了在不方便使用电脑时也能查看日志,增加了日志浏览器,主要包含字体调节、高亮匹配、正则搜索、过滤筛选几个常用功能;
  • 一键分享,可选择隔空投递、社交软件分享等快速提取日志文件,便于测试同学用于问题单附件或直接分享给研发同学;
  • 日志级别可实时调整,日常测试可使用调试级别,以减少冗余日志,在发现异常时开启追踪级别,以记录更详尽日志信息;

日志系统交互界面如图2所示。


图2. 日志系统交互界面

IVDevTools表现如何?

IVDevTools落地后,测试同学可通过配置环境变量自行切换运行环境,减少了研发同学打包的频率;日志系统的优化也显著提高了问题单的反馈质量,减少了测试和研发间的沟通成本,同时也极大提高了研发同学分析解决问题的效率;目前T平台、G平台均已集成使用,未来我们会持续优化以提高其实用性和易用性。

相关文章

网友评论

      本文标题:iOS开发工具IVDevTools

      本文链接:https://www.haomeiwen.com/subject/ijjdfctx.html