2012-09-28 35 views
12

Antes que nada, gracias por leer esta publicación y por adelantado por ayudarme con este asunto. Actualmente estoy creando un webshell para Android para ejecutar Webapps, esto se ejecuta en el Android 2.2 SDK.Android 2.2 Webview causa la API OpenGL ES sin contexto actual (registrado una vez por hilo)

El problema aparece cuando puedo depurar mi aplicación (esto se hace en un Android 4.0 Teléfono a través de USB):

09-28 11:32:32.415: D/dalvikvm(25629): Debugger has detached; object registry had 576 entries 
09-28 11:32:36.355: W/ActivityThread(25764): Application com.android_api8_webshell is waiting for the debugger on port 8100... 
09-28 11:32:36.375: I/System.out(25764): Sending WAIT chunk 
09-28 11:32:36.380: I/dalvikvm(25764): Debugger is active 
09-28 11:32:36.575: I/System.out(25764): Debugger has connected 
09-28 11:32:36.575: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:36.775: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:36.975: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:37.175: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:37.375: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:37.575: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:37.780: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:37.980: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:38.180: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:38.385: I/System.out(25764): waiting for debugger to settle... 
09-28 11:32:38.585: I/System.out(25764): debugger has settled (1497) 
09-28 11:32:38.710: I/webclipboard(25764): clipservice: [email protected] 
09-28 11:32:38.765: V/StringUrl(25764): String: http://www.cidesign.nl 
09-28 11:32:38.785: D/WML_SISO(25764): InitPasteboardJni 
09-28 11:32:38.795: V/(25764): NotificationPresenterImpl::setSettingsValue 0 
09-28 11:32:38.795: V/(25764): NotificationPresenterImpl::setSettingsValue 0 
09-28 11:32:38.800: D/webkit(25764): Firewall not null 
09-28 11:32:38.800: D/webkit(25764): euler: isUrlBlocked = false 
09-28 11:32:38.930: D/CLIPBOARD(25764): Hide Clipboard dialog at Starting input: finished by someone else... ! 
09-28 11:32:42.440: I/GATE(25764): <GATE-M>DEV_ACTION_COMPLETED</GATE-M> 
09-28 11:32:42.455: E/libEGL(25764): call to OpenGL ES API with no current context (logged once per thread) 
09-28 11:32:42.455: D/ShaderProgram(25764): couldn't load the vertex shader! 
09-28 11:32:42.455: E/libEGL(25764): call to OpenGL ES API with no current context (logged once per thread) 
09-28 11:32:42.455: D/ShaderProgram(25764): couldn't load the vertex shader! 
09-28 11:32:42.455: E/libEGL(25764): call to OpenGL ES API with no current context (logged once per thread) 
09-28 11:32:42.455: D/ShaderProgram(25764): couldn't load the vertex shader! 
09-28 11:32:42.455: E/libEGL(25764): call to OpenGL ES API with no current context (logged once per thread) 
09-28 11:32:42.455: D/ShaderProgram(25764): couldn't load the vertex shader! 
09-28 11:32:42.455: E/libEGL(25764): call to OpenGL ES API with no current context (logged once per thread) 
09-28 11:32:42.455: D/ShaderProgram(25764): couldn't load the vertex shader! 

Este es mi código en mi clase principal:

package com.android_api8_webshell; 

import android.os.Bundle; 
import android.app.Activity; 
import android.util.Log; 
import android.view.Menu; 
import android.webkit.WebView; 
import android.webkit.WebSettings; 

public class Main extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     WebView myWebView = (WebView) findViewById(R.id.webView1); 

     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     Log.v("StringUrl", "String: " + getResources().getText(R.string.url)); 

     myWebView.loadUrl(getResources().getText(R.string.url).toString()); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

Y por último, pero no menos importante, es el xml im que se ejecuta con:

<resources> 
    <string name="title_activity_main">Main</string> 
    <string name="url">http://www.cidesign.nl</string> 
    <string name="app_name">Android_API8_WebShell</string> 
    <string name="menu_settings">Settings</string> 
</resources> 

Conozco esta configuración que ayudó a othe RS:

<application android:hardwareAccelerated="true" ...> 

Ésta es sin embargo para el SDK de arriba 2.3.3, el SDK estoy corriendo con tenga soporte para esta función.

Realmente espero que me puedan ayudar con este asunto.

Gracias de antemano,

David

+0

Si hay alguna forma de usar un SDK más nuevo, siempre puede probar setLayerType (View.LAYER_TYPE_SOFTWARE, null); –

+0

Puede cambiar a la capa de software utilizando reflexiones para que funcione en dispositivos más antiguos. Describí cómo aquí: http://stackoverflow.com/questions/7781655/android-setlayertype-webview/11145961#11145961 –

+0

Es obligatorio para usted usar el SDK 2.2 o podría usar un SDK más reciente (digamos 4.2. 2) pero compatible con 2.2 dispositivos a través de la API de soporte? – rockeye

Respuesta

2

Para obtener android:hardwareAccelerated propiedad y todavía apoyar API 8 (2,2), establezca targetSdkVersion a 11, pero dejar minSdkVersion como es:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11" /> 
<application android:hardwareAccelerated="true" ... 

cuando se ejecuta en dispositivos pre-API 11, solo se ignorará hardwareAccelerated.

+0

me estoy ejecutando de 2.2 a 4.2, ¿alguna solución? – PankajAndroid

+0

Esto aquí mismo. ¿No te funciona? Simplemente establezca targetSdkVersion en 17 - ese es el de 4.2 –

+0

disculpe, está funcionando – PankajAndroid

Cuestiones relacionadas