android - SIGSEGV 加载 HTML + Flash 到 WebView

标签 android flash webview

当我尝试使用 loadDataWithBaseURL 将 HTML 加载到带有嵌入式 flash 插件(主要是 youtube)且 PluginState 设置为 PluginState.ON 的 WebView 时,我收到 SIGSEGV 信号。我能够用一个简单的测试用例重现错误。见以下代码:

package ians.android2;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebSettings;

public class TestAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    WebView wv = (WebView)findViewById(R.id.webview);
    wv.getSettings().setPluginState(WebSettings.PluginState.ON);

    String html = "";
    html += "<object width=\"620\" height=\"376\">";
    html += "<param name=\"movie\" value=\"http://www.youtube.com/v/C4KdcRHoXOA?fs=1&amp;hl=en_US&amp;rel=0\"></param>";
    html += "<param name=\"allowFullScreen\" value=\"true\"></param>";
    html += "<param name=\"allowscriptaccess\" value=\"always\"></param>";
    html += "<embed src=\"http://www.youtube.com/v/C4KdcRHoXOA?fs=1&amp;hl=en_US&amp;rel=0\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"620\" height=\"376\"></embed>";
    html += "</object>";

    wv.loadDataWithBaseURL("notreal/", html, "text/html", "utf-8", null);
    }
}

最佳答案

当进程试图引用已分配给进程的内存段之外的内存时,会出现 SIGSEGV 信号或段错误。这可以防止进程破坏手机上运行的其他进程,甚至是 Android 本身。

如果我自己不尝试重现该问题,我建议您的代码可能暴露了运行在 HTC 上的 Dalvik JVM 中的一个缺陷。

关于段错误的一个很酷的事情是你应该能够获得一个核心文件,它描述了错误发生时内存中进程的状态。

核心文件可由 GNU 调试器 gdb 读取,并将提供调用堆栈跟踪,直至出现段错误。因此,如果您能找到相应的核心文件,那么将其与错误请求一起提交给 Android 开发人员会很有用。一些研究应该可以揭示您是否可以从 HTC 上的进程崩溃中获取核心文件。

从让您的代码正常工作的角度来看,我建议尝试使用不太复杂的 HTML 来查看它是否有效,然后逐步添加您需要的 html 以查看 HTML 中的特定更改是否会暴露缺陷。这对于 Android 开发人员在您提交给他们的任何错误报告中都是有用的。

关于android - SIGSEGV 加载 HTML + Flash 到 WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372473/

相关文章:

Android BLE BluetoothGatt 对象保持连接并触发 onCharacteristicChanged() 即使在调用 disconnect() 之后

android - 我安装了Android Studio 3.1.2。我注意到以下错误

android - Android 中的 Webview 适用于 4.2+ 而不是 2.3.3

android - 在webview中拦截下载并使用HttpClient下载

java - Web View 不显示 HTML

java - Android - 测量两次按钮点击之间的时间

android - 在 android M 中以编程方式更改 wifi 配置的开发?删除保存的 wifiaswords 不工作

javascript - 从 IE7 和 IE8 调用自定义 FLASH 方法

flash - 使用 draw 方法时如何旋转 BitmapData。宽度高度边界裁剪/裁剪问题

flash - 通过 ActionScript 关闭网络摄像头使用