记录项目升级androidX+API29的各种坑2

前言

上篇文章记录了几个常见问题,然后在测试和线上的反馈中又出现了几个烦人的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

fix bug

问题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包内报错,所以直接去官网搜索了
解决方案:


image.png

问题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
解决方案:未解决,目前正在复现问题

目前先记录这些,若遇到或者收集到新的问题,会持续更新

你可能感兴趣的:(记录项目升级androidX+API29的各种坑2)