Fehler beim Aufblasen der Klasse android.webkit.WebView auf Android 5

8

Ich habe den folgenden Fehlertest unter Android 5.0 (API 21) erhalten. Getestet auf anderen Betriebssystemversionen funktioniert gut.

java.lang.RuntimeException: Aktivität ComponentInfo {... ui.activities.navigationActivity.fragments.legalFragment.LegalDetailActivity}: android.view.InflateException: Binäre XML-Dateizeile # 24: Fehler beim Aufblasen der Klasse android.webkit.WebView

Ich kann in Zeile 24 nichts Besonderes über das XML-Layout finden:

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

Der Code:

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.

Ich benutze die Bibliothek 'androidx.appcompat: appcompat: 1.1.0'.

Update : der volle Stapel:

--------- 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
quelle
Verfügt das Gerät über eine aktuelle Installation von "Android System WebView"? Unter Android 5.0, IIRC, bietet diese "App" den Mut dahinter WebView.
CommonsWare
Ich ziehe nur das Simulatorbild. Vermutlich nicht.
MiguelSlv
Und kann es nicht installieren, da der Simulator Google Play nicht installiert hat.
MiguelSlv
Witzig, getPackageManager (). HasSystemFeature ("android.software.webview") sagt, dass es installiert ist, aber jetzt im App Manager angezeigt wird.
MiguelSlv

Antworten:

4

Kürzlich stand ich das gleiche, es ist ein Problem , das über die Rede ist hier , die noch nicht gelöst ist. Der Absturz tritt nur bei API 21 auf.

Es gibt nur wenige Lösungen, die ein Downgrade der androidx.appcompat:appcompatVersionen erwähnen . Diese Antwort hat mir geholfen. Es werden auch andere mögliche Problemumgehungen erwähnt. Wählen Sie die Antwort aus, die für Sie gilt.

BEARBEITEN: Der Absturz tritt auch bei API 22 und 23 auf, wenn der Nutzer Google Play nicht installiert hat.

BEARBEITEN 2: Wie im Issue-Tracker hier erwähnt , bietet das Upgrade der androidx.appcompat:appcompatVersion auf 1.2.0-alpha02 in einigen Fällen die Lösung. Bitte führen Sie eine ausführliche Diskussion durch, um eine geeignete Problemumgehung zu finden.

Wie von @MiguelSlv erwähnt, ist das Hinzufügen dieses Maven-Repositorys eine vorübergehende Korrektur. Alle oben genannten Problemumgehungen haben jedoch Nebenwirkungen. Da der Fehler noch nicht behoben ist, handelt es sich nicht um eine saubere Lösung.

Sam.
quelle
Ich bin mir nicht sicher, ob das von Ihnen erwähnte Problem dasselbe ist. In Ihrer Ausgabe handelt es sich beim Absturz um eine Ressource. Ich sehe es nicht auf meinem Stapelfehler.
MiguelSlv
1
Ich denke, es ist ähnlich, siehe das andere Problem und die Diskussion, es wird der Schluss gezogen, dass 1.2.0-alpha02` es behebt. issuetracker.google.com/issues/141351441#comment35
Sam.
1
@ MiguelSlv Ich denke, Sie haben ein ähnliches Problem mit der Stapelverfolgung. Es ist klar Caused by: android.content.res.Resources$NotFoundException: String resource ID, dass Sie die bereitgestellte Lösung überprüfen sollten. Ich denke, es würde helfen
Shadow Droid
1
@Sam. Bitte aktualisieren Sie die Antwort mit dem Punkt, den Sie im Kommentar erwähnt haben
Shadow Droid
alpha01 behebt es nicht für mich. Ich versuche dann alpha02 zu verwenden, aber aus irgendeinem Grund kann gradle es nicht finden. Ich habe das Maven-Repository ' ci.android.com/builds/submitted/6052626/androidx_snapshot/… ' hinzugefügt . Das Ändern des Konstruktors kann einige Nebenwirkungen haben. Suchen Sie immer noch nach einer sauberen Lösung für meinen Fall.
MiguelSlv
3

Diese Antwort, die ich im März 2020 schreibe, könnte danach geändert werden.

In meinem Fall, in build.gradle, App - Ebene, änderte ich implementation 'androidx.appcompat:appcompat:1.0.0'zu implementation 'androidx.appcompat:appcompat:1.2.0-alpha02'und Problem gelöst ist.

Andere Konfiguration, die ich bereits habe, aber nicht geändert habe: - 1-in-Gradle-Projektebene, die ich habe

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

2- und in Gradle-wrapper.properties habe ich distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

3- und in Gradle App Level Ich habe android { compileSdkVersion 29 buildToolsVersion '29.0.2' festgestellt, dass diese Lösung auf einem realen Gerät mit Android Version 5 getestet wurde

Atef Farouk
quelle
danke für den Kommentar ... Entwickler, die die neueste stabile Version wollen, können diesen Link ansehen mvnrepository.com/artifact/androidx.appcompat/…
Beyaz
Ich habe das neueste AndroidX verwendet ... immer noch Probleme aufgetreten sind nicht gelöst
Beyaz
Diese Antwort ist falsch
Beyaz
@ Beyaz: Wenn die Antwort bei dir nicht funktioniert, heißt das nicht, dass sie falsch ist. wie es mein Problem gelöst hat und bereits von anderen 2 Entwicklern gewählt wurde. Vielen Dank für
Ihr
Lieber @Atef, ich habe über zehn Apps ... Alle meine Apps haben ein Absturzproblem für Android 5.1 ... Sie sagen, dass es für Sie funktioniert hat ... aber Sie liegen falsch ... Ich versuche immer noch, diesen Fehler zu beheben
Beyaz
2

24. April 2020, ich habe es damit gelöst:

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

Vorherige und nicht funktionierende Version ist unten:

implementation 'androidx.appcompat:appcompat:1.1.0'

@canerkaseler

canerkaseler
quelle
2
Das hat bei mir funktioniert. 01. Mai 2020
Yoannes Geissler
0

Ich habe über zehn Apps. Alle meine Apps haben "Inflating Problems". Ich habe versucht, Probleme zu lösen. Und ich habe mit Emulatoren und realen Geräten getestet, sie haben keinen Absturz. Aber mein Benutzer also! Beim Testen mit dem Emulator habe ich schließlich einen Absturz festgestellt. Hier ist das Ergebnis: Diese Antwort wurde mit dem 19. April 2020 geschrieben:

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

Die oben genannten Versionen haben schwerwiegende Probleme. Das Erstellen von Dialogen führt zu Problemen beim Aufblasen von Edittext oder TextView.

Die folgenden Versionen wurden ein wenig getestet, aber es gab keinen Absturz

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

Wenn Sie diese Versionen noch testen, werden die Ergebnisse geteilt

Beyaz
quelle