android记录一次线上崩溃问题的分析解决过程

错误栈信息如下:
错误栈
第一步:首先看看出问题的源码
在这里插入图片描述
没觉得有何异常,而且研发测试灰度发版过程中都没有崩溃,最终崩溃位置android.widget.RelativeLayout.onMeasure是android源码,所以初步怀疑是适配问题,再找找其他信息

第二步:查找更多信息
在这里插入图片描述
过程中发现崩溃只集中在4.2.2和4.3版本,基本可以确认是版本适配问题,再仔细看看崩溃的日志,如下:

1 android.widget.RelativeLayout.onMeasure(RelativeLayout.java:631)
2 android.view.View.measure(View.java:15689)

实际崩溃发生在android源码里,高度怀疑是老版本的bug

第三步:查老版本android源码

这里首先安利一个看android源码的网站,可以看到android 9及以前的所有源码:

http://androidxref.com/

打开网站找4.3的源码(看4.2.2的也行),可以看到RelativeLayout.java548行,mLayoutParams没有判空就直接使用了,崩溃就出在这里
在这里插入图片描述
第四部,解决

找到问题,解决问题的办法就好找了:

ViewGroup.LayoutParams lp = contentView.getLayoutParams();
if (lp == null) {
	lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 	ViewGroup.LayoutParams.WRAP_CONTENT);
	contentView.setLayoutParams(lp);
}

contentView.getLayoutParams()如果为null,就new一个LayoutParams并set,这样就解决了问题哈!


谢谢阅览,欢迎建议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值