Erro ao inflar a classe android.webkit.WebView no android 5

8

Eu recebi o seguinte teste de erro no Android 5.0 (API 21). Testado em outras versões do sistema operacional funciona bem.

java.lang.RuntimeException: Não foi possível iniciar a atividade ComponentInfo {... ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}: android.view.InflateException: Linha de arquivo XML binário # 24: Erro ao inflar a classe android.webkit.WebView

Não é possível encontrar nada de especial sobre o layout xml, na linha 24:

<WebView
    android:id="@+id/nav_fg_legal_detail_web"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
  />

O código:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    setTheme(R.style.AppTheme_NoActionBar)
    setContentView(R.layout.legal_detail_activity) // crash here. Nothing done to web view yet.

Estou usando a biblioteca 'androidx.appcompat: appcompat: 1.1.0'.

Atualização : a pilha completa:

--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.byte_artisan.mchat2, PID: 4198
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.byte_artisan.mchat2/com.byte_artisan.mchat2.ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}: android.view.InflateException: Binary XML file line #24: Error inflating class android.webkit.WebView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
    at android.app.ActivityThread.access$800(ActivityThread.java:144)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 Caused by: android.view.InflateException: Binary XML file line #23: Error inflating class android.webkit.WebView
    at android.view.LayoutInflater.createView(LayoutInflater.java:633)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
    at com.byte_artisan.mchat2.ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity.onCreate(LegalDetailActivity.kt:18)
    at android.app.Activity.performCreate(Activity.java:5937)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
    at android.app.ActivityThread.access$800(ActivityThread.java:144) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5221) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
    at android.view.LayoutInflater.createView(LayoutInflater.java:607)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55) 
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:806) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:504) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:414) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555) 
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161) 
    at com.byte_artisan.mchat2.ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity.onCreate(LegalDetailActivity.kt:18) 
    at android.app.Activity.performCreate(Activity.java:5937) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
    at android.app.ActivityThread.access$800(ActivityThread.java:144) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5221) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
 Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040002
    at android.content.res.Resources.getText(Resources.java:274)
    at android.content.res.Resources.getString(Resources.java:360)
    at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:702)
    at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
    at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:619)
    at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:758)
    at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:608)
    at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:546)
    at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:312)
    at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:97)
    at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:264)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:124)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:111)
    at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
    at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:108)
    at com.android.webview.chro
MiguelSlv
fonte
O dispositivo possui uma instalação "Android System WebView" atualizada? No Android 5.0, IIRC, esse "aplicativo" fornece as entranhas por trás WebView.
CommonsWare
Eu apenas puxo a imagem do simulador.
MiguelSlv 3/01
E não pode instalá-lo, porque o simulador não possui o Google Play instalado.
MiguelSlv 3/01
Engraçado, getPackageManager (). HasSystemFeature ("android.software.webview") diz que está instalado, mas agora é exibido no gerenciador de aplicativos.
MiguelSlv 3/01

Respostas:

4

Recentemente, enfrentei o mesmo: há um problema mencionado aqui , que ainda não foi resolvido. A falha ocorre apenas na API 21.

Existem poucas soluções que mencionam o downgrade das androidx.appcompat:appcompatversões. Essa resposta me ajudou. Além disso, existem outras soluções possíveis mencionadas, escolha a resposta que se aplica a você.

EDIT: A falha também ocorre nas API 22 e 23 se o usuário não tiver o Google Play instalado.

EDIT 2: Conforme mencionado no rastreador de problemas aqui , e atualizar a androidx.appcompat:appcompatversão para 1.2.0-alpha02 está fornecendo a correção em alguns casos. Consulte uma discussão detalhada para encontrar uma solução alternativa adequada.

Conforme mencionado por @MiguelSlv, adicionar este repositório maven é uma correção temporária. No entanto, todas as soluções alternativas acima têm efeitos colaterais. Como o bug ainda não foi corrigido, não é uma solução limpa.

Sam.
fonte
Não tenho certeza se o problema mencionado é o mesmo. No seu problema, a falha é sobre um recurso. não o vejo no meu erro de pilha.
MiguelSlv
1
Eu acho que é semelhante, por favor, veja a outra questão e discussão, conclui-se que 1.2.0-alpha02` corrige isso. issuetracker.google.com/issues/141351441#comment35
Sam.
1
@MiguelSlv Eu acho que você está enfrentando um problema semelhante no track stack, é claro, por Caused by: android.content.res.Resources$NotFoundException: String resource IDfavor, verifique com a solução fornecida, acho que ajudaria
Shadow Droid
1
@Sam. atualize gentilmente a resposta com o ponto que você mencionou no comentário
Shadow Droid
alpha01 não corrige isso para mim. Eu tento usar o alpha02, mas, por algum motivo, o gradle não consegue encontrá-lo. eu adicionei o repositório maven ' ci.android.com/builds/submitted/6052626/androidx_snapshot/… '. Modificar o construtor pode ter alguns efeitos colaterais. Ainda estou procurando uma solução limpa para o meu caso.
MiguelSlv 3/01
3

Esta resposta que estou escrevendo em março de 2020 pode ser alterada depois disso.

No meu caso, no build.gradle, no nível do aplicativo, mudei implementation 'androidx.appcompat:appcompat:1.0.0'para implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'e o problema foi resolvido.

Outra configuração que eu já tenho, mas não as alterei: - Nível 1 do projeto Gradle

classpath 'com.android.tools.build:gradle:3.5.3'

2- e no Gradle-wrapper.properties eu tenho distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

3- e no nível de aplicativo gradle, observei android { compileSdkVersion 29 buildToolsVersion '29.0.2' que esta solução foi testada em dispositivo real com a versão Android 5

Atef Farouk
fonte
obrigado pelo comentário ... os desenvolvedores que desejam a versão estável mais recente podem procurar neste link mvnrepository.com/artifact/androidx.appcompat/…
Beyaz
Eu usei androidx mais recente ... ainda problema ocorrer não resolvido
Beyaz 14/04
Esta resposta está errada
Beyaz 14/04
@ Beyaz: se a resposta não está funcionando para você, isso não significa que está errado. como resolveu meu problema e já votou por outros 2 desenvolvedores. obrigado pela compreensão
Atef Farouk 14/04
Caro @Atef, tenho mais de dez aplicativos ... Todos os meus aplicativos têm problema de falha para o Android 5.1 ... Você está dizendo que funcionou para você ... mas está errado ... Ainda estou tentando corrigir esse bug
Beyaz 14/04
2

Em 24 de abril de 2020, resolvi-o com o seguinte:

implementation 'androidx.appcompat:appcompat:1.2.0-beta01'

A versão anterior e não funciona está abaixo:

implementation 'androidx.appcompat:appcompat:1.1.0'

@canerkaseler

canerkaseler
fonte
2
Isso funcionou para mim. 01 Maio 2020
Yoannes Geissler
0

Eu tenho mais de dez aplicativos, todos os meus aplicativos têm "Inflar problemas". Eu estava tentando resolver problemas ... E testei com emuladores e dispositivos reais, eles não têm falhas ... Mas meu usuário assim! Finalmente, enquanto testava com emulador, peguei uma falha. Aqui está o resultado: Esta resposta foi escrita com 19 de abril de 2020:

androidx.appcompat:appcompat:1.2.0-beta01
androidx.appcompat:appcompat:1.2.0-alpha03
androidx.appcompat:appcompat:1.2.0-alpha02

as versões acima têm problemas sérios .... Criar caixa de diálogo, causar problemas de edição do Texttext ou TextView ...

as versões abaixo foram testadas um pouco, mas não houve falha

androidx.appcompat:appcompat:1.2.0-alpha01
androidx.appcompat:appcompat:1.1.0 

Ainda testando essas versões, compartilhará resultados

Beyaz
fonte