SysUtils: ApplicationContext 在 ApplicationStatus (WebView) 中为 null

2022-09-02 01:56:07

我可以在基于WebView的应用程序启动中看到一些奇怪的东西。它完全不会影响应用程序,但我很好奇为什么会出现错误。没有什么崩溃,一切似乎都还好,但错误...

这是logcat

Loading com.google.android.webview version 42.0.2311.137 (code 2311137)
I/LibraryLoader﹕ Time to load native libraries: 2 ms (timestamps 3347-3349)
I/LibraryLoader﹕ Expected native library version number "",actual native library version number ""
V/WebViewChromiumFactoryProvider﹕ Binding Chromium to main looper Looper (main, tid 1) {2d3b4b2c}
I/LibraryLoader﹕ Expected native library version number "",actual native library version number ""
I/chromium﹕ [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0, default verbosity = 0
I/BrowserStartupController﹕ Initializing chromium process, singleProcess=true
W/art﹕ Attempt to remove local handle scope entry from IRT, ignoring
E/SysUtils﹕ ApplicationContext is null in ApplicationStatus
W/chromium﹕ [WARNING:resource_bundle.cc(286)] locale_file_path.empty()
I/chromium﹕ [INFO:aw_browser_main_parts.cc(63)] Load from apk succesful, fd=34 off=6850672 len=3697
I/chromium﹕ [INFO:aw_browser_main_parts.cc(76)] Loading webviewchromium.pak from, fd:35 off:7953036 len:1161174
I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:379>: QUALCOMM Build: 01/15/15, ab0075f, Id3510ff6dc
W/AudioManagerAndroid﹕ Requires BLUETOOTH permission
W/chromium﹕ [WARNING:data_reduction_proxy_config.cc(150)] SPDY proxy OFF at startup
W/art﹕ Attempt to remove local handle scope entry from IRT, ignoring
W/AwContents﹕ onDetachedFromWindow called when already detached. Ignoring
I/GAv4﹕ Google Analytics 4.5.0/7327 is starting up. To enable debug logging on a device run:
    adb shell setprop log.tag.GAv4 DEBUG
    adb logcat -s GAv4

我想错误来自这里:https://chromium.googlesource.com/chromium/src/base/+/master/android/java/src/org/chromium/base/SysUtils.java

几行 WebView 初始化

...
// load url in webView
webView.loadUrl(webViewUrl);
webView.setWebViewClient(new MyAppWebViewClient());

// implement WebChromeClient inner class
// we will define openFileChooser for select file from camera
webView.setWebChromeClient(new WebChromeClient() {
...

这是怎么回事?


答案 1

这里发生的事情是:

ApplicationStatus 尚未初始化,因此无法从中获取上下文。这是一个完全自然的情况,因此不应引发任何错误。将此记录为错误是编码人员的夸大其词。

然而:

这不会导致任何实际问题,因为该函数尝试获取上下文对象只是为了执行另一次检查以评估设备的性能。由于它有时无法调用“isLowRamDevice()”,因此它只会继续执行其余的检查。因此,最坏的情况是此时无法检测到低端手机,并且将进行后续检查。

这也是完全正常的,因为如果函数检测到KitKat以下的任何内容,它就会有一个早期返回。("I see this error in a Lollipop device (Nexus 10) but not in a JellyBean device"// Any pre-KitKat device cannot be considered 'low-end')


答案 2

推荐