最近,羊羊乐儿在开发一款HarmonyOS2.0的软件,采用的js+java混合开发模式,js与hml主要用于页面UI设计,java则主要用于提供软件所需要的能力!但是,在实现记录是否已完成软件初次开启,不再推送初次启动页的时候,却遇到了一些小问题,不过最终还是解决了,下面就来给大家分享一下我的经验吧!
事情是这样子的,羊羊乐儿将已在自己鸿蒙设备上测试通过的版本,放到了云端的mate30测试,却发现运行以后,界面一片空白,什么也不加载,于是去鸿蒙官网又仔细查了一下:
原来是API6已经不再维护之前的数据存储接口了,而云端的mate30鸿蒙则正是这个API版本!
于是呢,羊羊乐儿就在自己的启动代码,里引入了新的'@ohos.data.storage'类,并使用新的方式,制作了一份用于判断初次启动页是否完成的验证!
就这样,羊羊乐儿再一次将新生成的hap包,推至了云端API6接口的mate30,看起来好像是成功了,可以显示出页面了!
然而,事情并没有这么简单,当我再将hap包推至自己的鸿蒙设备时,我发现我自己的鸿蒙设备又不能加载出页面了!而且,我将try和catch的内容对调,重新打包推至自己的鸿蒙设备也是如此,并且这样的版本连云端api6的mate30也不能用了 !大概分析了一下原因:
一旦你在page所对应的js里import了'@ohos.data.storage'这个新类,那低于API6的鸿蒙设备就会造成加载不出这个页面,而如果是在API6的环境里import'@system.storage'这个旧类,你不去调用里面的参数的话,那么它不会影响到。可是这样的话,引入新的类旧的没发工作,不引入新的类那新的Api6又不能调用之前的存取代码,那不就无解了么?<