2011-03-20 9 views
15

PluginState eklentisi PluginState.ON ile birlikte, loadDataWithBaseURL ile gömülü flash eklentileri (çoğunlukla youtube) içeren bir Web Görünümü'ne HTML yüklemeye çalıştığımda SIGSEGV sinyalleri alıyorum. Hatayı basit bir test vakasıyla yeniden üretebiliyorum.SIGSEGV HTML + Flash'ı WebView'e yükleme

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); 
    } 
} 
+0

Bu 2.2.1 dayalı son firmware kullanan bir HTC Desire HD üzerindedir. Stok ROM, özel bir şey yok. – Ian

cevap

5

SIGSEGV sinyalleri veya Bölümleme Hatalar bir işlem süreci için tahsis edilmiş hafıza kısmına dışında başvuru bellek çalıştığında meydana gelir: Aşağıdaki kodu bakınız. Bu, işlemlerin telefon üzerinde çalışan diğer işlemlerin ve Android'in kendisini bozmasına engel olur. Ben senin kod muhtemelen HTC çalışan Dalvik JVM bir kusur ortaya işaret edeceği problemi kendim yeniden kalkışmaksızın

. Segmentasyon Hataları güzel yanlarından

biri arıza oluştuğunda bellekte sürecin durumunu açıklayan bir çekirdek dosyası elde edebilmek gerektiğidir.

Çekirdek dosyalar, GNU ayıklayıcı gdb tarafından okunabilir ve çağrı yığını segmentasyon hatası oluştu noktaya kadar iz verecektir. Dolayısıyla, ilgili bir çekirdek dosyayı bulabilirseniz, Android geliştiricilerine bir hata isteğiyle birlikte göndermek yararlı olacaktır. Biraz araştırma, çekirdek dosyayı bir HTC'deki bir işlem çökmesinden alıp alamayacağınızı göstermelidir. görünümünde Bunu çalışıp çalışmadığını görmek için daha az karmaşık HTML saldırması ve daha sonra aşamalı olarak HTML'de belirli bir değişiklik kusur ortaya olmadığını görmek için gerektiren html eklemenizi öneririz çalışma kodunuzu alma açısından

. Bu, Android geliştiricileri için, onlara gönderdiğiniz herhangi bir hata raporunda yararlı olur.

+0

Segmentasyon Arıza başvurum aşağı not ve yeniden zorlamak için neden olabilir (durum üretiliyor olmadan ..)? –

+1

Bir segmentasyon hatası sadece uygulamanın kapatılmasına neden olur. –

+0

Teşekkürler. bilmek istediğim buydu –