最开始,本人打算使用WSL2搭配官方提供的Ubuntu 22.04安装Aiot-IDE进行快应用开发,结果发现无法在aiot-ide中正常启动模拟器——当然这不是我们要讨论的重点,我呢也就直接开始最省事的办法,下载Ubuntu 20.04的完整iso镜像,然后安装在Hyper-V虚拟机中。
接下来的几天,这一切运作的都很好,Aiot-IDE能正常使用,模拟器也能正常开启。只不过IDE一直在给我弹插件更新——由于当时并没有需要更新的需求,也就没搭理了,直到今天,它自动给我更新了插件到最新版本,不出意外,“到祸了”。
在我打开Aiot-IDE时,右侧突然弹出一个我从来没见过的窗口,提示我环境没配置好,我当时还寻思着,是不是Ubuntu自动更新导致的问题,让它自动处理一下就好了,于是就点了按钮让它自动处理——最后也算是“处理好了”,我寻思着byd还挺好用,打开ux文件,哎哟我去,怎么还带ux preview的,这可牛逼大了,总算是“遥遥领先”了隔壁BlueOS的开发插件好吧。然后,我准备开始启动模拟器调试我的应用,小米的第一坨大的就直接拉我头上了——这byd东西提示我找不到模拟器!好吧,更新版本了,改动有点大,可以理解,我重新创建模拟器就好了吧......我去,我皮肤捏?我的s1 pro皮肤捏?s1 pro出太久了不支持了皮肤删了,我可以理解,但为什么不给s3出个皮肤?唉算了,用8pro的皮肤凑合吧。启动模拟器的过程还挺新奇捏,右侧开个窗口显示画面,不用再忍受之前的构式AVD边框了,好评!
就这点了吗?绝对不可能,更刺激的还在后面——模拟器启动成功后,我的应用代码也开始运行了,然后迎面而来一个报错:"No such file or directory",这个报错是来自"storage.get"函数的,在之前,我从来没有遇到过这个问题,storage的逻辑也不允许它出现这个问题。好吧,或许是API变了呢?因为之前我检测storage key是否存在就是靠判定get success的data是不是空字符串(官方文档中明确提到key不存在返回default,而default默认为空字符串),现在可能变成直接fail了吧。我就往里加了个fail的回调,寻思着console.log一下fail data,结果data是空的,他妈连code也是空的,真是我吗糙了个大比,乐开花了。我寻思也就算了吧,不追究了,直接把后续代码逻辑放里面吧——运行模拟器,报错,这次还是"No such file or directory",但有所不同的是,这次的报错来自"storage.set"函数,因为我后续的逻辑涉及到了这个函数——但是这绝对说不过去,你说storage.get获取不到key报错No such file or directory还好说,你一个本来就有用来添加新key value的用途的storage.set报这个错,一个系统的API连自己的API文档都不遵循了,你说好笑吗?乐开花了属于是。我直接不敢用了,连这么个基础的数据功能都出问题,别的功能能出什么问题,那想象空间可太大了。
Only Xiaomi Can Do. 从可用到不可用只需一个更新
最后把aiot-ide-banner从1.2.3降级到1.2.0解决。望小米之后在推送插件更新时先自行检查可用性,此文留给后人参考。
接下来的几天,这一切运作的都很好,Aiot-IDE能正常使用,模拟器也能正常开启。只不过IDE一直在给我弹插件更新——由于当时并没有需要更新的需求,也就没搭理了,直到今天,它自动给我更新了插件到最新版本,不出意外,“到祸了”。
在我打开Aiot-IDE时,右侧突然弹出一个我从来没见过的窗口,提示我环境没配置好,我当时还寻思着,是不是Ubuntu自动更新导致的问题,让它自动处理一下就好了,于是就点了按钮让它自动处理——最后也算是“处理好了”,我寻思着byd还挺好用,打开ux文件,哎哟我去,怎么还带ux preview的,这可牛逼大了,总算是“遥遥领先”了隔壁BlueOS的开发插件好吧。然后,我准备开始启动模拟器调试我的应用,小米的第一坨大的就直接拉我头上了——这byd东西提示我找不到模拟器!好吧,更新版本了,改动有点大,可以理解,我重新创建模拟器就好了吧......我去,我皮肤捏?我的s1 pro皮肤捏?s1 pro出太久了不支持了皮肤删了,我可以理解,但为什么不给s3出个皮肤?唉算了,用8pro的皮肤凑合吧。启动模拟器的过程还挺新奇捏,右侧开个窗口显示画面,不用再忍受之前的构式AVD边框了,好评!
就这点了吗?绝对不可能,更刺激的还在后面——模拟器启动成功后,我的应用代码也开始运行了,然后迎面而来一个报错:"No such file or directory",这个报错是来自"storage.get"函数的,在之前,我从来没有遇到过这个问题,storage的逻辑也不允许它出现这个问题。好吧,或许是API变了呢?因为之前我检测storage key是否存在就是靠判定get success的data是不是空字符串(官方文档中明确提到key不存在返回default,而default默认为空字符串),现在可能变成直接fail了吧。我就往里加了个fail的回调,寻思着console.log一下fail data,结果data是空的,他妈连code也是空的,真是我吗糙了个大比,乐开花了。我寻思也就算了吧,不追究了,直接把后续代码逻辑放里面吧——运行模拟器,报错,这次还是"No such file or directory",但有所不同的是,这次的报错来自"storage.set"函数,因为我后续的逻辑涉及到了这个函数——但是这绝对说不过去,你说storage.get获取不到key报错No such file or directory还好说,你一个本来就有用来添加新key value的用途的storage.set报这个错,一个系统的API连自己的API文档都不遵循了,你说好笑吗?乐开花了属于是。我直接不敢用了,连这么个基础的数据功能都出问题,别的功能能出什么问题,那想象空间可太大了。
Only Xiaomi Can Do. 从可用到不可用只需一个更新
最后把aiot-ide-banner从1.2.3降级到1.2.0解决。望小米之后在推送插件更新时先自行检查可用性,此文留给后人参考。