我刚刚在我的机器上创建了一个API 23模拟器:
我使用自己的一些应用程序成功尝试了它。但每次我尝试使用blockquote
作为用户界面的应用程序时,应用程序都会崩溃:
此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)设备。
修改
我刚才:
问题仍然存在,但日志不同,而且更清晰一点。有<html>
<head></head>
<body>
<h1>Hello</h1>
<p>Hello world!</p>
</body>
</html>
我无法解释:
ClassNotFoundException
有什么想法吗? (我正在进一步调查,所以如果我发现任何相关内容,我会更新这篇文章)
答案 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),即使这不会出现在上面链接的故障单上。