笔者最近遇到一个巨坑的bug,深夜boss紧急呼叫,用户进入某个页面闪退,根据观察,闪退的用户都是iOS17的用户,遂打离线包真机调试,调试发现日志为


遂初步判定为UIGraphicsImageRenderer方法过期导致崩溃,由于页面用到了三方组件,想当然的觉得是原生插件内部方法的问题,不兼容iOS17,遂重写原生插件进行替换,一通重写替换后,在运行,还是崩溃.....笔者麻了~
遂一行行注释代码,发现跟原生插件没啥关系,😭白费大半天功夫,在次寻找,一行行代码注释,发现崩溃在nvue中的css代码上
.bar {
position: absolute;
bottom: 0;
width: 24rpx;
background-image: linear-gradient(to bottom, #9724A9, #FFC600);
}
笔者当时就懵了,一个简简单单的渐变色代码为何会造成崩溃,为何其他的nvue界面不崩,就这个页面崩,继续找不同发现,其他的view在设置渐变色之前都设置了height 高度属性,这个css是在js方法中动态设置的高度,导致崩溃,麻了~当然,也有可能是笔者的离线包太老了导致的,但是这个锅uniapp团队一定得背,太难受了,知道原因所以更好修改了,只要在js中设置高度后再设置渐变色就可以了
that.styleObject = {'position': "absolute", "bottom": "0",
"width": "24rpx","height":that.barProcess,"background-image":"linear-gradient(to bottom, #9724A9, #FFC600)"};
还有一个地方也触发了这个崩溃,text 只设置了line-height,没有设置height也会导致这个问题,兄弟们多查查这种代码吧
完美解决
生命不息,代码不止!码农一枚,请多点赞
注:承接各种原生插件开发,uniapp开发,flutter开发,有需私我呦~
网友评论