IBM Worklight 6.0: ¿no se puede ejecutar la aplicación de luz de trabajo híbrida de muestra utilizando dojo toolkit para entorno android en avd?

Desarrollé una aplicación híbrida de muestra utilizando Worklight 6.0 y dojo toolkit 1.9 para android environment2.2 . Cuando probé esta aplicación en el simulador funciona bien. Pero cuando lo probé en AVD o en un dispositivo real, se ejecuta, pero solo muestra una pantalla en blanco. ¿No puede entender qué hacer para que funcione correctamente en el dispositivo?

Cuando intenté ejecutar AVD, noté la siguiente lista de errores:

07-08 19:51:22.462: I/dalvikvm(664): Could not find method org.apache.cordova.CordovaWebView.setOverScrollMode, referenced from method org.apache.cordova.DroidGap.init 07-08 19:51:22.462: W/dalvikvm(664): VFY: unable to resolve virtual method 12024: Lorg/apache/cordova/CordovaWebView;.setOverScrollMode (I)V 07-08 19:51:22.462: D/dalvikvm(664): VFY: replacing opcode 0x6e at 0x0043 07-08 19:51:22.502: I/CordovaLog(664): Changing log level to DEBUG(3) 07-08 19:51:22.502: I/CordovaLog(664): Found preference for exit-on-suspend=false 07-08 19:51:22.502: D/CordovaLog(664): Found preference for exit-on-suspend=false 07-08 19:51:22.502: D/DroidGap(664): DroidGap.onCreate() 07-08 19:51:22.552: I/dalvikvm(664): Could not find method android.webkit.WebView., referenced from method org.apache.cordova.CordovaWebView. 07-08 19:51:22.552: W/dalvikvm(664): VFY: unable to resolve direct method 536: Landroid/webkit/WebView;. (Landroid/content/Context;Landroid/util/AttributeSet;IZ)V 07-08 19:51:22.552: D/dalvikvm(664): VFY: replacing opcode 0x70 at 0x0001 07-08 19:51:22.552: D/dalvikvm(664): VFY: dead code 0x0004-0046 in Lorg/apache/cordova/CordovaWebView;. (Landroid/content/Context;Landroid/util/AttributeSet;IZ)V 07-08 19:51:22.852: D/JsMessageQueue(664): Set native->JS mode to 2 07-08 19:51:22.852: I/CordovaWebView(664): Disabled addJavascriptInterface() bridge since Android version is old. 07-08 19:51:22.852: E/dalvikvm(664): Could not find class 'android.webkit.WebResourceResponse', referenced from method org.apache.cordova.CordovaWebViewClient.getWhitelistResponse 07-08 19:51:22.852: W/dalvikvm(664): VFY: unable to resolve new-instance 176 (Landroid/webkit/WebResourceResponse;) in Lorg/apache/cordova/CordovaWebViewClient; 07-08 19:51:22.852: D/dalvikvm(664): VFY: replacing opcode 0x22 at 0x000b 07-08 19:51:22.852: D/dalvikvm(664): VFY: dead code 0x000d-0014 in Lorg/apache/cordova/CordovaWebViewClient;.getWhitelistResponse ()Landroid/webkit/WebResourceResponse; 07-08 19:51:22.872: W/dalvikvm(664): VFY: unable to find class referenced in signature (Landroid/webkit/WebResourceResponse;) 07-08 19:51:22.892: W/dalvikvm(664): VFY: unable to find class referenced in signature (Landroid/webkit/WebResourceResponse;) 07-08 19:51:22.892: W/dalvikvm(664): VFY: unable to find class referenced in signature (Landroid/webkit/WebResourceResponse;) 07-08 19:51:23.012: D/DroidGap(664): DroidGap.init() 07-08 19:51:23.122: I/UICAndroid(664): {LoggingLevel=3, AddCookieDomain=false, PostMessageTimeout=60000, CookiePath=/, CookieParam=, KillSwitchTimeInterval=180, BufferPercent=20, HasToPersistLocalCache=true , MessageTypeHeader=WorklightHit, CookieDomain=, WhiteListParam=id, LibraryVersion=8.8.1.0, MaskIdList=com.tealeaf.sp:id/EditText*,com.tealeaf.sp:id/login.password, PostMessageLevelWiFi=3, UseRandomSample=false, KillSwitchMaxNumberOfTries=3, SensitiveCapitalCaseAlphabet=X, FilterMessageTypes=true, PostMessageTimeIntervals=30, SensitiveSmallCaseAlphabet=x, CompressPostMessage=true, PostMessageMaxBytesSize=20000, SensitiveSymbol=#, PostMessageLevelCellular=3, MessageTypes=4,5,6, PostMessageSocketTimeout=60000, CookieUrl=, UseWhiteList=true, KillSwitchUrl=, KillSwitchEnabled=false, MessageVersion=2.1.0.0, HasMasking=true, TimeIntervalBetweenSnapshots=60, PostMessageUrl=@USE_WORKLIGHT_DEFAULT@, CachedFileMaxBytesSize=512000, BufferLimit=100, AddCookiePath=false, SensitiveNumber=9, CachingLevel=3, ManualPostEnabled=true, HasCustomMask=true, DisplayLogging=true, MaxStringsLength=300, AddMessageTypeHeader=true, RandomSampleParam=, DoPostOnIntervals=false} 07-08 19:51:23.232: D/dalvikvm(664): GC_FOR_MALLOC freed 3250 objects / 238920 bytes in 63ms 07-08 19:51:23.262: I/UICAndroid(664): Screen height:800 Screen width420 07-08 19:51:23.342: D/DroidGap(664): Resuming the App 07-08 19:51:23.402: I/UICAndroid(664): Network changed 07-08 19:51:23.432: D/SoftKeyboardDetect(664): Ignore this event 07-08 19:51:23.502: D/WLDroidGap(664): New installation/upgrade detected, copying resources and saving new checksum 07-08 19:51:23.542: D/SoftKeyboardDetect(664): Ignore this event 07-08 19:51:23.732: I/UICAndroid(664): Did Client State change?: true 07-08 19:51:26.842: D/dalvikvm(664): GC_FOR_MALLOC freed 5447 objects / 429112 bytes in 71ms 07-08 19:51:31.494: D/WLDroidGap(664): Started copying files to local storage... 07-08 19:51:32.402: D/dalvikvm(664): GC_FOR_MALLOC freed 6653 objects / 552224 bytes in 58ms 07-08 19:51:34.072: D/dalvikvm(664): GC_FOR_MALLOC freed 1876 objects / 203720 bytes in 50ms 07-08 19:51:35.341: D/dalvikvm(664): GC_FOR_MALLOC freed 1528 objects / 494368 bytes in 71ms 07-08 19:51:36.441: D/dalvikvm(664): GC_FOR_MALLOC freed 2070 objects / 515744 bytes in 61ms 07-08 19:51:38.511: D/dalvikvm(664): GC_FOR_MALLOC freed 2270 objects / 520176 bytes in 64ms 07-08 19:51:40.661: D/dalvikvm(664): GC_FOR_MALLOC freed 2191 objects / 523952 bytes in 52ms 07-08 19:51:41.061: D/dalvikvm(664): GC_FOR_MALLOC freed 1969 objects / 525120 bytes in 65ms 07-08 19:51:42.782: D/dalvikvm(664): GC_FOR_MALLOC freed 2305 objects / 526720 bytes in 52ms 07-08 19:51:46.472: D/dalvikvm(664): GC_FOR_MALLOC freed 2529 objects / 529368 bytes in 52ms 07-08 19:51:47.993: D/WLDroidGap(664): Finished copying files to local storage... 07-08 19:51:48.012: D/WLDroidGap(664): no need to check web resource integrity 07-08 19:51:48.102: D/CordovaWebView(664): >>> loadUrl(file:///data/data/com.AccordFintech/files/www/skinLoader.html) 07-08 19:51:48.102: D/PluginManager(664): init() 07-08 19:51:48.112: D/CordovaWebView(664): >>> loadUrlNow() 07-08 19:51:48.592: D/DroidGap(664): onMessage(onPageStarted,file:///data/data/com.AccordFintech/files/www/skinLoader.html) 07-08 19:51:48.792: D/dalvikvm(664): GC_FOR_MALLOC freed 2184 objects / 422000 bytes in 81ms 07-08 19:51:49.592: D/Cordova(664): onPageFinished(file:///data/data/com.AccordFintech/files/www/skinLoader.html) 07-08 19:51:49.592: D/Cordova(664): Trying to fire onNativeReady 07-08 19:51:49.592: D/DroidGap(664): onMessage(onNativeReady,null) 07-08 19:51:49.592: D/DroidGap(664): onMessage(onPageFinished,file:///data/data/com.AccordFintech/files/www/skinLoader.html) 07-08 19:51:50.232: D/CordovaLog(664): Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. 07-08 19:51:50.232: I/Web Console(664): Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. at file:///data/data/com.AccordFintech/files/www/default/wlclient/js/cordova.js:908 07-08 19:51:50.322: D/CordovaNetworkManager(664): Connection Type: 3g 07-08 19:51:50.322: D/CordovaNetworkManager(664): Connection Type: 3g 07-08 19:51:50.322: D/DroidGap(664): onMessage(networkconnection,3g) 07-08 19:51:50.352: D/DroidGap(664): onMessage(spinner,stop) 07-08 19:51:50.492: D/CordovaWebView(664): >>> loadUrl(file:///data/data/com.AccordFintech/files/www/default/AccordFintech.html) 07-08 19:51:50.492: D/PluginManager(664): init() 07-08 19:51:50.512: D/CordovaWebView(664): >>> loadUrlNow() 07-08 19:51:50.532: D/DroidGap(664): onMessage(onPageStarted,file:///data/data/com.AccordFintech/files/www/default/AccordFintech.html) 07-08 19:51:50.733: D/dalvikvm(664): GC_FOR_MALLOC freed 2859 objects / 241376 bytes in 121ms 07-08 19:51:50.912: D/dalvikvm(664): GC_FOR_MALLOC freed 1560 objects / 135728 bytes in 54ms 07-08 19:51:51.622: D/DroidGap(664): onMessage(spinner,stop) 07-08 19:51:53.622: D/dalvikvm(664): GC_FOR_MALLOC freed 1225 objects / 370792 bytes in 153ms 07-08 19:51:56.991: D/Cordova(664): onPageFinished(file:///data/data/com.AccordFintech/files/www/default/AccordFintech.html) 07-08 19:51:56.991: D/Cordova(664): Trying to fire onNativeReady 07-08 19:51:56.991: D/DroidGap(664): onMessage(onNativeReady,null) 07-08 19:51:56.991: D/DroidGap(664): onMessage(onPageFinished,file:///data/data/com.AccordFintech/files/www/default/AccordFintech.html) 07-08 19:51:57.641: D/CordovaLog(664): Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. 07-08 19:51:57.641: I/Web Console(664): Falling back on PROMPT mode since _cordovaNative is missing. Expected for Android 3.2 and lower only. at file:///data/data/com.AccordFintech/files/www/default/wlclient/js/cordova.js:908 07-08 19:51:57.702: D/CordovaNetworkManager(664): Connection Type: 3g 07-08 19:51:57.721: D/CordovaNetworkManager(664): Connection Type: 3g 07-08 19:51:57.721: D/DroidGap(664): onMessage(networkconnection,3g) 07-08 19:51:57.741: D/DroidGap(664): onMessage(spinner,stop) 07-08 19:51:57.911: I/dalvikvm(664): Could not find method java.util.Calendar.getDisplayNames, referenced from method org.apache.cordova.Globalization.getDateNames 07-08 19:51:57.911: W/dalvikvm(664): VFY: unable to resolve virtual method 10795: Ljava/util/Calendar;.getDisplayNames (IILjava/util/Locale;)Ljava/util/Map; 07-08 19:51:57.911: D/dalvikvm(664): VFY: replacing opcode 0x74 at 0x009d 07-08 19:51:57.911: I/dalvikvm(664): Could not find method java.util.Calendar.getDisplayNames, referenced from method org.apache.cordova.Globalization.getDateNames 07-08 19:51:57.911: W/dalvikvm(664): VFY: unable to resolve virtual method 10795: Ljava/util/Calendar;.getDisplayNames (IILjava/util/Locale;)Ljava/util/Map; 07-08 19:51:57.911: D/dalvikvm(664): VFY: replacing opcode 0x74 at 0x00d0 07-08 19:51:57.911: I/dalvikvm(664): Could not find method java.util.Calendar.getDisplayNames, referenced from method org.apache.cordova.Globalization.getDateNames 07-08 19:51:57.911: W/dalvikvm(664): VFY: unable to resolve virtual method 10795: Ljava/util/Calendar;.getDisplayNames (IILjava/util/Locale;)Ljava/util/Map; 07-08 19:51:57.922: D/dalvikvm(664): VFY: replacing opcode 0x74 at 0x00e3 07-08 19:51:57.922: I/dalvikvm(664): Could not find method java.util.Calendar.getDisplayNames, referenced from method org.apache.cordova.Globalization.getDateNames 07-08 19:51:57.922: W/dalvikvm(664): VFY: unable to resolve virtual method 10795: Ljava/util/Calendar;.getDisplayNames (IILjava/util/Locale;)Ljava/util/Map; 07-08 19:51:57.922: D/dalvikvm(664): VFY: replacing opcode 0x74 at 0x00f2 07-08 19:51:57.922: D/dalvikvm(664): VFY: dead code 0x00a0-00b8 in Lorg/apache/cordova/Globalization;.getDateNames (Lorg/json/JSONArray;)Lorg/json/JSONObject; 07-08 19:51:57.922: D/dalvikvm(664): VFY: dead code 0x00d3-00d4 in Lorg/apache/cordova/Globalization;.getDateNames (Lorg/json/JSONArray;)Lorg/json/JSONObject; 07-08 19:51:57.922: D/dalvikvm(664): VFY: dead code 0x00e6-00e7 in Lorg/apache/cordova/Globalization;.getDateNames (Lorg/json/JSONArray;)Lorg/json/JSONObject; 07-08 19:51:57.922: D/dalvikvm(664): VFY: dead code 0x00f5-0118 in Lorg/apache/cordova/Globalization;.getDateNames (Lorg/json/JSONArray;)Lorg/json/JSONObject; 07-08 19:51:58.061: D/AccordFintech(664): wlclient init started 07-08 19:51:58.081: D/AccordFintech(664): Read cookies: null 07-08 19:51:58.091: D/AccordFintech(664): CookieMgr read cookies: {} 07-08 19:51:58.261: D/dalvikvm(664): GC_FOR_MALLOC freed 5659 objects / 415552 bytes in 64ms 07-08 19:51:58.541: D/AccordFintech(664): before: app init onSuccess 07-08 19:51:58.621: D/AccordFintech(664): after: app init onSuccess 07-08 19:51:58.621: D/AccordFintech(664): added onPause event handler 07-08 19:51:58.631: D/AccordFintech(664): wlclient init success 07-08 19:52:03.632: D/CordovaLog(664): Error: scriptError 07-08 19:52:03.632: E/Web Console(664): Error: scriptError at file:///data/data/com.AccordFintech/files/www/default/dojo/dojo.js:21 07-08 19:52:03.632: D/CordovaLog(664): Error: scriptError 07-08 19:52:03.642: E/Web Console(664): Error: scriptError at file:///data/data/com.AccordFintech/files/www/default/dojo/dojo.js:21 

Generado Accordfintech.html:

     AccordFintech         // Define WL namespace. var WL = WL ? WL : {}; /** * WLClient configuration variables. * Values are injected by the deployer that packs the gadget. */ WL.StaticAppProps = { "APP_DISPLAY_NAME": "AccordFintech", "APP_SERVICES_URL": "\/apps\/services\/", "APP_VERSION": "1.0", "ENVIRONMENT": "android", "LOGIN_DISPLAY_TYPE": "embedded", "WORKLIGHT_PLATFORM_VERSION": "6.0.0", "WORKLIGHT_ROOT_URL": "\/apps\/services\/api\/AccordFintech\/android\/" };                                  window.$ = window.jQuery = WLJQ;   if (typeof dojoConfig == "undefined") { var dojoConfig = {}; } (function(){ var modules = { dojo: {name: "dojo", location: "http://localhost:53514/dojoLib/Acc/AccordFintech/android/dojo"}, dijit: {name: "dijit", location: "http://localhost:53514/dojoLib/Acc/AccordFintech/android/dijit"}, dojox: {name: "dojox", location: "http://localhost:53514/dojoLib/Acc/AccordFintech/android/dojox"}}; if (!dojoConfig.packages) { dojoConfig.packages = []; } else { for (var i = 0; i < dojoConfig.packages.length; i++) { delete modules[dojoConfig.packages[i].name]; } } if (dojoConfig.packages.push) { for (var module in modules) { dojoConfig.packages.push(modules[module]); } } })();    

archivo .js:

 function wlCommonInit(){ require([ "layers/core-web-layer", "layers/mobile-ui-layer" ], dojoInit); } function dojoInit() { require([ "dojo/ready", "dojo/parser", "dojox/mobile", "dojo/dom", "dijit/registry", "dojox/mobile/ScrollableView", "dojox/mobile/View", "dojox/mobile/Heading", "dojox/mobile/RoundRectList", "dojox/mobile/ListItem" ], function(ready) { ready(function() { }); }); } 

enter image description here

enter image description here

    Retrocedamos un poco. En la publicación de nsand con respecto a la vista de consola, lo que estaba tratando de determinar es si su aplicación está utilizando el nuevo servidor de biblioteca Dojo que se introdujo en 6.0. En resumen, para 6.0, su aplicación solo tiene dentro de ella Dojo Mobile Layers. Cualquier otro recurso que necesite, por ejemplo, traducciones, widgets de dijit, se sirve desde el servidor. Puede leer sobre esto en el Centro de información 6.0: http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/index.jsp?topic=%2Fcom.ibm.rad.worklight.doc%2Ftopics%2Fcdojolibprjsetupwl. html

    Si sigue los pasos de nsand para desmarcar Proporcionar recursos de la biblioteca, esto desactiva el acceso de su aplicación a la Biblioteca / Servidor de Dojo. Todas las necesidades de Dojo deben ser manejadas por las capas de Dojo Mobile, o debe haber copiado los recursos necesarios en el proyecto.

    Entonces Paso 1: Verifique que su aplicación funcione en el simulador de navegador móvil con la opción Proporcionar recursos de la biblioteca marcada. Si el registro de la Consola muestra los recursos que se están sirviendo desde el servidor, estos deben copiarse en su aplicación antes de implementarlos en AVD o en un dispositivo.

    Paso 2: después de pensar que tiene todos los recursos de Dojo dentro de su proyecto, desmarque Proporcionar recursos de la biblioteca y vuelva a probarlo en MBS. Si falla en MBS, entonces falta algo en su aplicación que está en la biblioteca / servidor. Puede verificar Proporcionar recursos de biblioteca y volver a probar para ver si le muestra qué es eso. No se muestran todos los recursos, por ejemplo, si falta un archivo CSS.

    Háganos saber si eso lo ayuda a encontrar el problema. Si desmarca la opción Proporcionar recursos de la biblioteca y funciona bien en MBS pero falla en el dispositivo, entonces debemos buscar en otra parte.

    (nota: hay un defecto que le impide usar la Biblioteca / Servidor Dojo con AVD o en su dispositivo. Esto se solucionará pronto. No obstante, el uso de la Biblioteca / Servidor Dojo es un concepto de tiempo de desarrollo. producción, su aplicación necesita acceso a todos los recursos necesarios sin que se sirvan desde la Biblioteca / Servidor Dojo en Studio).

    Además de incluir los archivos *_ROOT.js , también puede necesitar eliminar la configuración de desarrollo de la aplicación. Para hacerlo, abra la vista Consola ( Ventana > Mostrar vista > Otros … > Consola ). Desde la vista de la consola, haga clic en el botón Abrir consola y seleccione Solicitudes de biblioteca Dojo de la lista. Desde la consola de Solicitudes de biblioteca de Dojo, haga clic en el menú Ver (el triángulo en la barra de herramientas) y desmarque Proporcionar recursos de biblioteca . Después de esto, crea e implementa el entorno de la aplicación en tu emulador o dispositivo.

    Desde el proyecto DojoLib en Eclipse, copie los archivos:

    DojoLib \ dojo \ dojo \ nls \ core-web-layer_ROOT.js
    DojoLib \ Dojo \ dojo \ nls \ mobile-ui-layer_ROOT.js

    Pegue los archivos en su proyecto de Worklight en www\dojo\nls .

    Intenta nuevamente ejecutar el proyecto.
    Puede haber otros cambios requeridos, pero primero veamos si lo anterior funciona.