Android API 23 Emulator下非常简单的WebView崩溃
我刚刚在我的机器上创建了一个API 23模拟器:Android API 23 Emulator下非常简单的WebView崩溃,android,android-emulator,android-webview,android-6.0-marshmallow,Android,Android Emulator,Android Webview,Android 6.0 Marshmallow,我刚刚在我的机器上创建了一个API 23模拟器: HAXM:v1.4,配置1GB的RAM AVD基地:Nexus 4 内存:768MB,第二次尝试时为896MB 堆:64MB GPU加速:否 我用自己的几个应用程序成功地尝试了它。但每次我尝试使用WebView作为UI的应用程序时,应用程序都会以这种方式崩溃: 此日志的前三行是与我的应用程序相关的唯一行(以蓝色突出显示)。在LogCat的“应用程序”列中,所有其他行都没有提到我的应用程序包的名称,但是在消息的中间(蓝色圈)中有一个。 我可以
- HAXM:v1.4,配置1GB的RAM
- AVD基地:Nexus 4
- 内存:768MB,第二次尝试时为896MB
- 堆:64MB
- GPU加速:否
WebView
作为UI的应用程序时,应用程序都会以这种方式崩溃:
此日志的前三行是与我的应用程序相关的唯一行(以蓝色突出显示)。在LogCat的“应用程序”列中,所有其他行都没有提到我的应用程序包的名称,但是在消息的中间(蓝色圈)中有一个。
我可以将HTML代码加载到WebView
中。崩溃发生在setContentView(网络视图)
时间:
public class MyActivity extends Activity {
private WebView mWebview = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mWebview = new WebView(this);
mWebview.loadDataWithBaseURL("file:///android_asset/", HTML_CODE, "text/html", "UTF-8", null);
setContentView(mWebview); // THIS IS WHERE THE CRASH OCCURS
}
[...]
使用或不使用runOnUiThread()
来运行mWebview.loadDataWithBaseURL()
会产生完全相同的结果,因为onCreate()
实际上在UI线程上
我使用的html代码不会改变任何东西。在上述情况下,HTML\u code
变量包含以下内容:
<html>
<head></head>
<body>
<h1>Hello</h1>
<p>Hello world!</p>
</body>
</html>
有什么想法吗?(我正在进一步调查,如果发现任何相关信息,我将更新此帖子)此行为不是由AVD的任何错误设置或任何缺少的先决条件(硬件等)造成的 如评论中所述:
#8…@chromium.org
不幸的是,OpenGL ES 2.0支持对于设备来说是强制性的
至少从安卓4.0开始,我们就没有明确支持
GLES 1.x,它只是在意外情况下工作的:/
模拟器(没有主机GPU)似乎有点问题
仿真)不符合Android设备的最低要求
我们也许能够在一个重要的时间为模拟器解决这个问题
性能成本;我们正在和模拟器团队讨论
在这里最好的做法是
现在这个问题已经解决了(SDK tools 25.1 RC1/platform 23 rev 3),即使上面链接的票证上没有出现这个问题 除非您编写了自己的NDK代码,否则您将在
WebView
中遇到错误。对此,您无能为力,只能对您的Web内容进行试验,看看您是否能够隔离出触发错误的操作。@Commonware感谢您的Commonware。我会进一步调查并在有相关信息时更新这篇文章。我相信这与@cryptojuice有关。是的,当然。当SDK发行版更新时,我满怀希望,因为问题仍然存在DataReductionProxySettingListener:由于异常而没有DRP密钥:java.lang.ClassNotFoundException:com.android.webview.chromium.DRP
(与之前相同)@cryptojuice由于我们唯一能做的事情就是等待这一问题得到解决,我回答了我自己的问题,如您所见。但是,实际的信息来自您,所以请随意用它写一个实际的答案。我接受它。我在VMware内部运行我的模拟器,所以我关闭了GPU仿真(如果我打开它,AVD将不会启动)。我有SDK平台23版本3,但仍然出现“check failed:kGLImplementationNon!=GetGLImplementation()(0 vs.0)”错误,浏览器无法启动。如果我有SDK平台23 rev 3,我还需要做什么才能让它正常工作?
10-28 20:26:05.102 2168-2168/com.example.myapp W/System: ClassLoader referenced unknown path: /data/app/com.example.myapp-1/lib/x86
10-28 20:26:08.583 2168-2168/com.example.myapp E/DataReductionProxySettingListener: No DRP key due to exception:java.lang.ClassNotFoundException: com.android.webview.chromium.Drp
10-28 20:26:09.393 2168-2213/com.example.myapp W/chromium: [WARNING:data_reduction_proxy_config.cc(423)] SPDY proxy OFF at startup
10-28 20:26:12.521 2168-2286/com.example.myapp A/chromium: [FATAL:gl_surface_android.cc(58)] Check failed: kGLImplementationNone != GetGLImplementation() (0 vs. 0)
10-28 20:26:12.521 2168-2286/com.example.myapp A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 2286 (GpuThread)