前言
上篇文章记录了几个常见问题,然后在测试和线上的反馈中又出现了几个烦人的bug
正文
问题7
问题:
Android版本 5.11报错
android.view.InflateException: Binary XML file line #30:
Error inflating class com.xx.xx.xx.ItemWebView(自定义的webview)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
at android.content.res.Resources.getText(Resources.java:318)
at android.content.res.VivoResources.getText(VivoResources.java:123)
at android.content.res.Resources.getString(Resources.java:404)
at
解决过程:先确定是否是自定义控件造成的,后来发现原生view也不行,腾讯X5Webview也不行,百度google后发现一个连接
https://stackoverflow.com/questions/41025200/android-view-inflateexception-error-inflating-class-android-webkit-webview
关键词: inflating webview String resource ID Resources.getText(这几个混着搜)
解决方案:
目前采用以下方案
将使用webview的activity里增加
@Override
public AssetManager getAssets() {
return getResources().getAssets();
}
补充:
google说这是他们androidX的问题,也可以通过这个人的方案
Feb-2020 update: Reverting to 1.0.2 stopped working for many people (including my app), but using the current version of androidx.appcompat:appcompat:1.2.0-alpha02 did fix the crash. (I was seeing it on a Huawei P8 Lite running Android 5.0 during Google's automated "Pre-launch report" testing).
将appcompat包升级至1.2.0-alpha02
问题8
问题:
java.lang.IllegalArgumentException: Unexpected TLS version: NONE
at okhttp3.TlsVersion.forJavaName(TlsVersion.java:53)
解决过程:问题上说是TLS version问题,百度了下说5.0以下巴拉巴拉,可是我们检测到在android8-android10均有问题,后来发现是okhttp版本过于老
解决方案:
将okHttp引用更新到3.11.0以上
连接说明https://square.github.io/okhttp/changelog_3x/#version-3110
问题9
问题:
java.lang.NoSuchMethodError: No super method setFrame(IIII)Z in class Lcom/tencent/tbs/core/webkit/AbsoluteLayout; or its super classes (declaration of 'com.tencent.tbs.core.webkit.AbsoluteLayout' appears in /data/user/0/com.jybd.shop/app_tbs/core_share/tbs_jars_fusion_dex.jar)
at com.tencent.tbs.core.webkit.WebView.access$701(TbsJavaCore:319)
解决过程:
android10的机子上偶现此bug,因为是腾讯X5包内报错,所以直接去官网搜索了
解决方案:
问题10
问题
java.lang.RuntimeException: Unable to start activity ComponentInfo
{com.xx.x/com.xx.x.x.x.activity.MainActivity}:
androidx.fragment.app.Fragment$InstantiationException:
Unable to instantiate fragment xx.xx.x.XFragment:
could not find Fragment constructor
解决过程:提示could not find Fragment constructor,是没有构造函数,原因貌似是后台杀死进程后,页面重新恢复时报错.原因分析来自以下连接
https://www.jianshu.com/p/8df58655bfe3
解决方案:未解决,目前正在复现问题
尾
目前先记录这些,若遇到或者收集到新的问题,会持续更新