小编jpe*_*tto的帖子

WebView AwDataDirLock 在某些 Samsung Galaxy S21 设备 (Android 12) 上崩溃

自 11 月 25 日以来,我开始在我的应用程序中看到以下崩溃:

Fatal Exception: java.lang.RuntimeException
Unable to create application com.doximity.doximitydroid.bases.DoxApp:
java.lang.RuntimeException: Using WebView from more than one process at once with the
same data directory is not supported. 
https://crbug.com/558377 : Current process com.doximity.doximitydroid (pid 9862),
lock owner com.doximity.doximitydroid (pid 8728)
Run Code Online (Sandbox Code Playgroud)

它仅发生在运行 Android 12 的 Samsung Galaxy S21 设备的后台。我的应用程序当前针对 Android 11,它似乎与我的应用程序中的任何更改无关。我在 Samsung Galaxy S21 设备上进行了测试,但无法重现(似乎只是部分用户)。

仔细阅读具体的崩溃,这似乎是由于我们的应用程序中创建了多个进程并尝试写入 WebView 的默认数据目录。同样,这种情况突然出现,并且只发生在非常特定的用户子集上,所以我不确定这是我的应用程序的问题。

希望有人能够对这个问题有一些见解。

我确实发现这篇 SO 帖子讨论了类似的问题,但我从未在 Android 11 上看到过,不幸的是,作者似乎尚未达成任何解决方案。

crash android android-webview samsung-galaxy android-12

8
推荐指数
0
解决办法
1330
查看次数

无法从设备复制基线配置文件输出

我正在尝试为我的应用程序生成基线配置文件,但我看到以下错误:

:benchmark:connectedReleaseAndroidTest
java.io.FileNotFoundException: META-INF/native/libnetty_tcnative_osx_aarch_64.jnilib
java.io.FileNotFoundException: META-INF/native/libnetty_tcnative_aarch_64.jnilib
java.io.FileNotFoundException: META-INF/native/libnetty_tcnative.jnilib
Shell command failed (255): appops set androidx.test.services MANAGE_EXTERNAL_STORAGE allow
No UID for androidx.test.services in user 0
Run Code Online (Sandbox Code Playgroud)

基线测试确实在设备上运行,但无法成功从设备复制输出文件:

started: startup(com.doximity.benchmark.BaselineProfileGenerator)
Moving /storage/emulated/0/Android/media/com.doximity.benchmark/BaselineProfileGenerator_startup-baseline-prof.txt to /sdcard/Android/media/com.doximity.benchmark/additional_test_output/BaselineProfileGenerator_startup-baseline-prof.txt
Pull Baseline Profile with: `adb pull "/storage/emulated/0/Android/media/com.doximity.benchmark/BaselineProfileGenerator_startup-baseline-prof-2023-08-22-18-48-56.txt" .`
Moving /storage/emulated/0/Android/media/com.doximity.benchmark/BaselineProfileGenerator_startup-baseline-prof-2023-08-22-18-48-56.txt to /sdcard/Android/media/com.doximity.benchmark/additional_test_output/BaselineProfileGenerator_startup-baseline-prof-2023-08-22-18-48-56.txt
finished: startup(com.doximity.benchmark.BaselineProfileGenerator)
Run Code Online (Sandbox Code Playgroud)

此基线配置文件测试之前在更新 Android 目标 SDK 和 AGP 版本之前有效:

config.target_sdk_version = 34 // was 31
config.compile_sdk_version = 34 // was 33
versions.android_gradle_plugin = '8.1.1' // was 7.3.1
versions.kotlin = '1.9.0' // was 1.8.10
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的设备和模拟器,并看到了相同的行为。

android macrobenchmark baseline-profile

5
推荐指数
0
解决办法
155
查看次数

在WebView中侦听URL片段ID更改

似乎WebInClcept方法(如shouldInterceptRequest(),onPageStarted()和shouldOverrideUrlLoading())仅侦听导致WebView加载新页面的URL更改.有没有办法在WebView上检测片段ID的URL更改,即index.html#fragment_id?

android android-webview webviewclient

4
推荐指数
1
解决办法
2094
查看次数