非常简单的WebView在API 23 Emulator下崩溃

时间:2015-09-25 18:11:22

标签: android android-emulator android-webview android-6.0-marshmallow

我刚刚在我的机器上创建了一个API 23模拟器:

  • HAXM:v1.4,内存分配1GB
  • AVD Base:Nexus 4
  • RAM:768MB,再试一次896MB
  • 堆:64 MB
  • GPU加速:否

我使用自己的一些应用程序成功尝试了它。但每次我尝试使用blockquote作为用户界面的应用程序时,应用程序都会崩溃:

enter image description here

此logcat的第三行是与我的应用程序唯一相关的(以蓝色突出显示)。所有其他行都没有在LogCat的“应用程序”列中提及我的应用程序包名称,但是在消息中间有一个(用蓝色圈出)。

我可以将HTML代码加载到WebView中。崩溃发生在WebView时间:

setContentView(theWebView)

使用或不使用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()实际上是在UI线程上。

我使用的html代码不会改变任何内容。在上面的例子中,onCreate()变量包含:

HTML_CODE

即使在我尝试的所有API 17和19设备和模拟器上使用更高级的HTML + CSS + JS + JS< - > Java绑定代码,该应用也能完美运行。这是我困惑的地方。我没有机会尝试使用实际的Android 6.0(API 23)设备。

修改

我刚才:

  • 从Eclipse迁移到Android Studio
  • 将HAXM升级到v1.5
  • 升级了我的SDK工具(24.4.1)和我的平台(23.0.1)

问题仍然存在,但日志不同,而且更清晰一点。有<html> <head></head> <body> <h1>Hello</h1> <p>Hello world!</p> </body> </html> 我无法解释:

ClassNotFoundException

有什么想法吗? (我正在进一步调查,所以如果我发现任何相关内容,我会更新这篇文章)

1 个答案:

答案 0 :(得分:3)

此行为不是由AVD的任何错误设置或任何缺少的先决条件(硬件等等)引起的。

评论cryptojuice中提及的this was caused by an OpenGL ES prerequisite issue on emulator side

  

#8 ...@chromium.org

     

不幸的是,设备必须支持OpenGL ES 2.0支持   至少从Android 4.0开始,所以我们从未明确支持过   GLES 1.x,它只是偶然工作:/

     

模拟器似乎有点问题(没有主机GPU   仿真)不符合Android设备的最低要求。

     

我们或许可以为模拟器解决这个问题   绩效成本;我们正在和模拟器团队谈论什么   这里最好的事情是。

现在这已经修复了(SDK工具25.1 RC1 / platform 23 rev 3),即使这不会出现在上面链接的故障单上。