真机调试不崩溃, App Store上的程序闪退

如题. 才上线App Store的app分享闪退了, 五雷轰顶, 赶紧打开电脑调试, 结果真机调试的时候没有问题, 真是让人头大.
检查了环境代码都是一样的, 但是线上闪退, 调试正常. 还有什么是不一样的呢?
对了, 线上包是release的, 真机是debug的.
现在问题清晰了, debug下正常, 但是release有问题. 啥原因? 咋整?

先看一下debug和release的设置:

真机调试.png
打包Archive.png

查到的原因是这样的, 分享的时候程序作了二维码的合成. 而合成二维码使用了ZXing. 工程中引用了ZXing的工程.


zxing.png

网上查到:

我们平时真机调试是用的debug模式,而打包安装是release模式,而要想在真机调试时使用release模式,就得进行以下设置。

  1. 点击停止旁的按钮,选择Edit Scheme.
  2. 在Run里选择info,然后在Build Configuration里选择Release。

然后就能真机调试下,发现问题崩溃地点了。
检查之后,发现问题出现原因竟然是当前控制器请求的网络数据全为空造成的,但打印却是的确返回了的。一句代码一执行,所创建的对象将会立马变成空。
打印错误日志:
error: Couldn't materialize: couldn't get the value of variable result: variable not available Errored out in Execute, couldn't PrepareToExecuteJITExpression
解决办法是在build settings里搜索optimization level,然后将Release改为Nono就可以了
Optimization Level 应该是编译器的优化程度。
比较早期的时候,硬件资源是比较缺乏的。为了提高性能,开发编译器的大师们,都会对编译器(从c到汇编的编译过程)加上一定的优化策略。优化后的代码效率比较高,但是可读性比较差,且编译时间更长。
优化是指编译器一级的措施,与机器指令比较接近,所以很可能会导致硬件不兼容,进而产生了你目前遇到的软件装不上的问题。
他是编译器的行为,与你代码理论上不相关的。 苹果的检查应该是检查你的代码一级的规范程度,隐私侵权相关的问题。应该是与编译的过程是无关的。请放心。
(以上来自:https://blog.csdn.net/ewfrggregtrwt/article/details/71191691)

问题配置.png
正确配置.png

参考:
https://blog.csdn.net/ewfrggregtrwt/article/details/71191691
https://blog.csdn.net/baidu_34159638/article/details/53114146

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。