NameNotFoundException-Webansicht

Lesezeit: 14 Minuten

Benutzer-Avatar
Kasper Finne Nielsen

Ich erhalte Fehlermeldungen von Crashlytics, die darauf hinweisen, dass einigen Geräten com.google.android.webview fehlt. Wie ist das überhaupt möglich?

java.lang.RuntimeException: Unable to start activity   ComponentInfo{com.myapp.app/com.myapp.ReaderActivity}: android.view.InflateException: Binary XML file line #29: Error inflating class com.myapp.MyWebView
       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(Method.java)
       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 #29: Error inflating class com.myapp.MyWebView
       at android.view.LayoutInflater.createView(LayoutInflater.java:633)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
       at android.support.v7.app.ActionBarActivity.setContentView(SourceFile:102)
       at com.myapp.ReaderActivity.onCreate(SourceFile:120)
       at android.app.Activity.performCreate(Activity.java:5933)
       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(Method.java)
       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(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
       at android.view.LayoutInflater.createView(LayoutInflater.java:607)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
       at android.support.v7.app.ActionBarActivity.setContentView(SourceFile:102)
       at com.myapp.ReaderActivity.onCreate(SourceFile:120)
       at android.app.Activity.performCreate(Activity.java:5933)
       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(Method.java)
       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.util.AndroidRuntimeException: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview
       at android.webkit.WebViewFactory.getFactoryClass(WebViewFactory.java:161)
       at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:101)
       at android.webkit.WebView.getFactory(WebView.java:2185)
       at android.webkit.WebView.ensureProviderCreated(WebView.java:2180)
       at android.webkit.WebView.setOverScrollMode(WebView.java:2239)
       at android.view.View.(View.java:3581)
       at android.view.View.(View.java:3675)
       at android.view.ViewGroup.(ViewGroup.java:491)
       at android.widget.AbsoluteLayout.(AbsoluteLayout.java:55)
       at android.webkit.WebView.(WebView.java:538)
       at android.webkit.WebView.(WebView.java:483)
       at android.webkit.WebView.(WebView.java:466)
       at android.webkit.WebView.(WebView.java:453)
       at com.myapp.MyWebView.(SourceFile:31)
       at java.lang.reflect.Constructor.newInstance(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
       at android.view.LayoutInflater.createView(LayoutInflater.java:607)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
       at android.support.v7.app.ActionBarActivity.setContentView(SourceFile:102)
       at com.myapp.ReaderActivity.onCreate(SourceFile:120)
       at android.app.Activity.performCreate(Activity.java:5933)
       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(Method.java)
       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.pm.PackageManager$NameNotFoundException: com.google.android.webview
       at android.app.ApplicationPackageManager.getPackageInfo(ApplicationPackageManager.java:114)
       at android.webkit.WebViewFactory.getFactoryClass(WebViewFactory.java:133)
       at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:101)
       at android.webkit.WebView.getFactory(WebView.java:2185)
       at android.webkit.WebView.ensureProviderCreated(WebView.java:2180)
       at android.webkit.WebView.setOverScrollMode(WebView.java:2239)
       at android.view.View.(View.java:3581)
       at android.view.View.(View.java:3675)
       at android.view.ViewGroup.(ViewGroup.java:491)
       at android.widget.AbsoluteLayout.(AbsoluteLayout.java:55)
       at android.webkit.WebView.(WebView.java:538)
       at android.webkit.WebView.(WebView.java:483)
       at android.webkit.WebView.(WebView.java:466)
       at android.webkit.WebView.(WebView.java:453)
       at com.myapp.MyWebView.(SourceFile:31)
       at java.lang.reflect.Constructor.newInstance(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
       at android.view.LayoutInflater.createView(LayoutInflater.java:607)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.createCustomViewInternal(SourceFile:206)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.access$000(SourceFile:20)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(SourceFile:297)
       at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:177)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:809)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
       at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(SourceFile:60)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
       at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(SourceFile:228)
       at android.support.v7.app.ActionBarActivity.setContentView(SourceFile:102)
       at com.myapp.ReaderActivity.onCreate(SourceFile:120)
       at android.app.Activity.performCreate(Activity.java:5933)
       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(Method.java)
       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)

Und es ist nur von Geräten, auf denen Lollipop läuft. Ich habe es auf meinem Nexus 5 getestet, aber ich kann den Fehler nicht reproduzieren. Ich benutze Proguard

Mein MyWebView sieht so aus:

public class MyWebView extends WebView {

    public static final String tag = MyWebView.class.getName();
    private HtmlJSInterfaceNew js;

    public MyWebView(Context context) {
        super(context);
        gd = new GestureDetector(context, sogl);
        init();
    }

    public MyWebView(Context context, AttributeSet attrs) {
        super(context, attrs);
        gd = new GestureDetector(context, sogl);
        init();
    }

    public MyWebView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        gd = new GestureDetector(context, sogl);
        init();
    }

    @SuppressLint("NewApi")
    private void init() {
        setPadding(0, 0, 0, 0);
        MyWebViewClient myWebViewClient = new MyWebViewClient();        
        this.setWebViewClient(myWebViewClient);
        setWebChromeClient(new MyWebChromeClient());
        if(!isInEditMode())
        {
            getSettings().setAllowFileAccess(true);
            getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
            getSettings().setJavaScriptEnabled(true);
            WebSettings webSettings = getSettings();

            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                webSettings.setAllowContentAccess(false);
            }

            webSettings.setUseWideViewPort(true);


        }


    }
    public void addMyJavascriptInterface(HtmlJSInterfaceNew htmlJSInterface, String string) {
        js = htmlJSInterface;
        addJavascriptInterface(htmlJSInterface, string);
    }

    public class MyWebChromeClient extends WebChromeClient
    {
        public void onProgressChanged(WebView view, int progress) {
        }
    }
}

Die Hauptursache sind meistens:

android.util.AndroidRuntimeException: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview
       at android.webkit.WebViewFactory.getFactoryClass(WebViewFactory.java:161)

Ich denke also, dass es etwas mit Proguard und vielleicht dem JavascriptInterface zu tun haben könnte. Irgendwelche Ideen?

EDIT: von grepcode habe ich die Methode getFactoryClass gefunden:

private static Class<WebViewFactoryProvider> getFactoryClass() throws ClassNotFoundException {
        Application initialApplication = AppGlobals.getInitialApplication();
        try {
            // First fetch the package info so we can log the webview package version.
            String packageName = getWebViewPackageName();
            sPackageInfo = initialApplication.getPackageManager().getPackageInfo(packageName, 0);
            Log.i(LOGTAG, "Loading " + packageName + " version " + sPackageInfo.versionName +
                          " (code " + sPackageInfo.versionCode + ")");

            // Construct a package context to load the Java code into the current app.
            Context webViewContext = initialApplication.createPackageContext(packageName,
                    Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY);
            initialApplication.getAssets().addAssetPath(
                    webViewContext.getApplicationInfo().sourceDir);
            ClassLoader clazzLoader = webViewContext.getClassLoader();
            Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "Class.forName()");
            try {
                return (Class<WebViewFactoryProvider>) Class.forName(CHROMIUM_WEBVIEW_FACTORY, true,
                                                                     clazzLoader);
            } finally {
                Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW);
            }
        } catch (PackageManager.NameNotFoundException e) {
            // If the package doesn't exist, then try loading the null WebView instead.
            // If that succeeds, then this is a device without WebView support; if it fails then
            // swallow the failure, complain that the real WebView is missing and rethrow the
            // original exception.
            try {
                return (Class<WebViewFactoryProvider>) Class.forName(NULL_WEBVIEW_FACTORY);
            } catch (ClassNotFoundException e2) {
                // Ignore.
            }
            Log.e(LOGTAG, "Chromium WebView package does not exist", e);
            throw new AndroidRuntimeException(e);
        }
    }

  • Ich sehe diese auch in unseren Crashlytics-Daten. Hauptsächlich Lollipop aber auch ein paar 4.0.4. Zu den Geräten gehören Nexus 7, Galaxy S5, Galaxy Discover. Angeblich ist keiner von ihnen verwurzelt. Wie/warum sollte einem Gerät com.google.android.webview fehlen? Es betrifft eine sehr kleine Anzahl von Benutzern und wir haben viele andere Benutzer mit diesen Geräten, die dieses Problem NICHT haben. Hmm…

    – Robert Nekic

    14. April 2015 um 20:53 Uhr


Benutzer-Avatar
Riley C

Es ist wahrscheinlich, dass dies in dem sehr kurzen Zeitrahmen unmittelbar nach der Aktualisierung der WebView-Anwendung des Android-Systems von Lollipop geschieht.

Ich hatte diesen Fehler in der Google Play Dev Console gesehen, konnte ihn aber auch nie auf meinem Nexus 5 reproduzieren, unabhängig davon, wie sehr ich wirklich versuchte, meine App daran zu hindern, auf die Android System WebView-App zuzugreifen:

java.lang.RuntimeException: Unable to create application com.uninteresting.app.name:
    android.util.AndroidRuntimeException: android.content.pm.PackageManager$NameNotFoundException: com.google.android.webview

Dann erfuhren wir, dass unsere App auf einigen Geräten unmittelbar nach den Updates der System WebView-App ständig mit der obigen Meldung abstürzte, also habe ich das getestet. Immer noch keine Ergebnisse, das Vanilla Nexus 5 weigerte sich, unsere App zum Absturz zu bringen! Also habe ich andere Telefone anderer Hersteller ausprobiert (ungefähr 75 % unserer Berichte stammen von Samsung Galaxy-Geräten) und plötzlich stürzten wir ständig ab. Meine Testmethodik:

  1. Öffnen Sie Ihre App und vergewissern Sie sich, dass eine WebView angezeigt wird.
  2. Öffnen Sie den Play Store, navigieren Sie zu „Meine Apps“ und rufen Sie „Android System WebView“ auf. Updates deinstallieren. Dies sollte Sie nicht zum Absturz bringen, aber Sie sollten sehen, dass Ihre App einen Neustart erzwingt.
  3. Öffnen Sie Ihre App wieder und lassen Sie sie nach dem Neustart wiederherstellen.
  4. Gehen Sie zurück in den Play Store und aktualisieren Sie Android System WebView.
  5. Fokussieren Sie Ihre App während des Aktualisierungsvorgangs neu. Wenn Sie sich jetzt auf einem betroffenen Gerät befinden, sollte es abstürzen. Wenn nicht, wird Ihre App einfach in den Hintergrund verschoben und leise neu gestartet.

Ein paar kleine Vorbehalte zu dem, was ich bisher gesagt habe:

  • Unsere App macht den Fehler, ein WebView zu starten extrem früh, weshalb wir in unserer Absturzmeldung “Anwendung kann nicht erstellt werden” erhalten. Der Benutzer muss nicht einmal auf unsere App schauen, damit sie abstürzt. Ich bezweifle, dass dies auf Sie zutrifft, aber wenn Ihre App versucht, ihre Aktivität mit einem WebView während dieses Szenarios neu zu starten, würde dies dies erklären.
  • 100 % unserer Berichte stammen von 5.0-Geräten, ich habe keine Ahnung, wie das bei irgendetwas unter Lollipop passieren könnte.
  • Wir sehen Berichte von Nexus 4 und Nexus 5 mit diesem Fehler, daher weiß ich nicht, warum ich ihn auf diesen Geräten nicht reproduzieren kann. Könnte eine separate Ursache sein, aber das muss ich genauer untersuchen.

Kurz gesagt, ich denke nicht sofort, dass Sie mit ProGuard oder Ihrem JavascriptInterface etwas falsch machen. Ich neige sehr stark dazu, der Firmware die Hauptursache für die meisten Berichte zuzuschreiben, was dazu führt, dass ein reibungsloser Update-Prozess zu einem wird, der stattdessen dazu führt, dass einige Apps vollständig abstürzen.

Bearbeiten: Ich habe ein paar weitere Tests durchgeführt und es stellte sich heraus, dass alle Geräte, die nicht abgestürzt sind, 5.0 oder 5.0.1 sind, während alle Geräte, die abgestürzt sind, 5.0.2 waren, sodass ich nicht mehr bequem mit dem Finger auf OEMs zeigen kann .

  • Wir haben eine Handvoll dieser Fehler, die in unseren Crashlytics-Daten von Benutzern mit Android 4.0.4, 4.2.2, 4.4.2, 5.0, 5.0.1, 5.0.2 und 5.1 gemeldet wurden. Es ist sehr selten: etwa 30 Berichte für eine App mit mehreren Millionen Installationen.

    – Robert Nekic

    1. Mai 2015 um 13:13 Uhr

  • @RobertNekic Bei einer vergleichbaren Anzahl von Installationen haben wir dies bisher nur auf 5.0 und 5.1 gesehen, und basierend auf der Ursache unseres Problems kann ich nicht sehen, wie es auf einer niedrigeren Version auftreten würde. Ich würde gerne wissen, was genau diese verursacht.

    – Riley C

    1. Mai 2015 um 17:58 Uhr

  • @androiddeveloper Google einfach danach: code.google.com/p/android/issues/detail?id=175124 und groups.google.com/forum/#!topic/google-admob-ads-sdk/…. Dies scheint viele Menschen zu betreffen.

    – Jared Burrows

    28. Juni 2015 um 17:10 Uhr

  • Hier die korrekten Informationen von einem Chromium-Teammitglied. code.google.com/p/chromium/issues/detail?id=506369 Scheint derzeit nicht lösbar

    – MatPag

    8. Oktober 2015 um 7:41 Uhr


  • @ RileyC wie Mat sagte, es wird nicht wie angegeben behoben dieser Kommentar. Es heißt, dass es passieren könnte, wenn der WebView-Client aktualisiert wird. Die App wird nach Abschluss der Installation neu gestartet.

    – Sufian

    4. Mai 2016 um 6:41 Uhr


Einfache Möglichkeit, dies zu überprüfen androidx.webkit Bibliothek:

dependencies {
    ...
    implementation 'androidx.webkit:webkit:1.4.0'
}

Verwenden WebViewCompat.getCurrentWebViewPackage Methode vor (z. B. Anzeigen):

val webViewPackageInfo = WebViewCompat.getCurrentWebViewPackage(appContext)
Timber.d("📦 web view package info: %s", webViewPackageInfo?.toString())
val isWebViewPackageAvailable = webViewPackageInfo != null
prepareWithAds(canPlayAds = isWebViewPackageAvailable)

Schritte zum Reproduzieren:

  1. Deaktivieren oder löschen Sie den System-WebView-Dienst
  • Deaktivieren:
    Gehen Sie zum Systemeinstellungsmenü -> Apps -> Android System WebView -> Deaktivieren
  • Löschen:
adb root
adb shell pm uninstall -k --user 0 com.google.android.webview
  1. Öffnen Sie etw WebView
  2. Dann stürzt WebView ab, wenn das Paket nicht verfügbar ist:

E/WebViewFactory: Chromium WebView-Paket existiert nicht android.webkit.WebViewFactory$MissingWebViewPackageException: WebView-Anbieter konnte nicht geladen werden: Kein WebView installiert

Dies passiert, wenn Chrome auf Android aktualisiert wird: Während des Updates zählt das Paket nicht als installiert und Versuche, es im Paketmanager nachzuschlagen, schlagen fehl.

In meinem Fall hielt es noch eine Weile an (die App stürzte immer wieder ab), bis ich tatsächlich Gerät neu starten / neu startendann ist alles gut.

An Ihrem Code ist nichts auszusetzen, es geht nur darum, wie Updates gehandhabt werden.

Quelle: https://bugs.chromium.org/p/chromium/issues/detail?id=506369

Ich habe einen Weg gefunden, das Problem zu reproduzieren (htc eins (m8) android 6.0).
In meiner App verwende ich Android-System WebView Komponente beim Start (in Activity.onCreate() Methode). Ich weiß, dass dies eine schlechte Vorgehensweise ist, aber dies ist nur ein Beispiel.

Schritte:

  1. offen Google Play und entfernen Sie Updates der Android-System WebView
  2. Starten Sie Ihre App
  3. geh zurück zu Google Play und starten Sie die Installation von Updates der Android-System WebView und kehren Sie schnell zu Ihrer App zurück und warten Sie, bis Ihre App geschlossen ist
  4. Wiederholen Sie Schritt 1 und kehren Sie schnell zu Ihrer App zurück
  5. Sie werden einen Fehlerbericht sehen
  6. Entschuldigung für mein Englisch…
1333160cookie-checkNameNotFoundException-Webansicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy