IBM Worklight 6.0 - Unable to run sample hybrid wo

2019-01-07 01:07发布

I have developed a sample hybrid application using worklight 6.0 and dojo toolkit 1.9 for android environment2.2. When i tested this application on simulator it works fine. But when i tried it on AVD or on actual device, it runs but displays a blank screen only. Can't understand what to do to make it work on actual device properly?

When i tried it to run on AVD i noticed following list of errors:

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.<init>, referenced from method org.apache.cordova.CordovaWebView.<init>
07-08 19:51:22.552: W/dalvikvm(664): VFY: unable to resolve direct method 536: Landroid/webkit/WebView;.<init> (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;.<init> (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

Generated Accordfintech.html:

<!DOCTYPE HTML><html>
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta charset="UTF-8">
        <title>AccordFintech</title>
        <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
        <meta content="yes" name="apple-mobile-web-app-capable">
        <link href="wlclient/css/wlclient.css" rel="stylesheet">
        <link href="wlclient/css/wlgap.android.css" rel="stylesheet">
        <link href="images/favicon.png" rel="shortcut icon">
        <link href="images/apple-touch-icon.png" rel="apple-touch-icon">
        <link href="css/AccordFintech.css" rel="stylesheet">
        <script>
        // 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\/"
};</script>
        <script src="wlclient/js/cordova.js"></script>
        <script src="common/js/wljq.js"></script>
        <script src="common/js/wl_.min.js"></script>
        <script src="common/js/sjcl.min.js"></script>
        <script src="wlclient/js/analytics/Tealeaf.min.js"></script>
        <script src="common/js/stacktrace.min.js"></script>
        <script src="common/js/base.js"></script>
        <script src="wlclient/js/messages.js"></script>
        <script src="common/js/wlcommon.js"></script>
        <script src="wlclient/js/diagnosticDialog.js"></script>
        <script src="wlclient/js/deviceAuthentication.js"></script>
        <script src="wlclient/js/window.js"></script>
        <script src="wlclient/js/worklight.js"></script>
        <script src="wlclient/js/wlclient.js"></script>
        <script src="wlclient/js/wlfragments.js"></script>
        <script src="wlclient/js/encryptedcache.js"></script>
        <script src="wlclient/js/analytics/analytics.js"></script>
        <script src="wlclient/js/checksum.js"></script>
        <script src="wlclient/js/deviceSensors/triggers.js"></script>
        <script src="wlclient/js/deviceSensors/acquisition.js"></script>
        <script src="wlclient/js/deviceSensors/geo.js"></script>
        <script src="wlclient/js/deviceSensors/wifi.js"></script>
        <script src="wlclient/js/events/eventTransmitter.js"></script>
        <script src="wlclient/js/deviceSensors/bind.js"></script>
        <script src="wlclient/js/deviceSensors/geoUtilities.js"></script>
        <script src="wlclient/js/challengeHandlers/antiXSRFChallengeHandler.js"></script>
        <script src="wlclient/js/challengeHandlers/authenticityChallengeHandler.js"></script>
        <script src="wlclient/js/challengeHandlers/deviceAuthAutoProvisioningChallengeHandler.js"></script>
        <script src="wlclient/js/challengeHandlers/deviceAuthNoProvisioningChallengeHandler.js"></script>
        <script src="wlclient/js/challengeHandlers/remoteDisableChallengeHandler.js"></script>
        <script src="wlclient/js/deviceSensors/ExtendedGeolocation.js"></script>
        <script src="wlclient/js/features_stubs/jsonstore_stub.js"></script>
        <script src="wlclient/js/wlgap.android.js"></script>
        <script>window.$ = window.jQuery = WLJQ;</script>
            <script src="dojox/mobile/deviceTheme.js" type="text/javascript"></script>
            <script type="text/javascript">
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]);
        }
    }
})();
</script><script data-dojo-config="isDebug: false, async: true, parseOnLoad: true, mblHideAddressBar: false" src="dojo/dojo.js" type="text/javascript"></script>
    </head>
    <body id="content" style="display: none;">
        <div data-dojo-props="label:'Accord Fintech'" data-dojo-type="dojox.mobile.Heading"></div>
        <div data-dojo-props="selected:true" data-dojo-type="dojox.mobile.ScrollableView" id="view0">
            <div data-dojo-type="dojox.mobile.RoundRectList">
                <div data-dojo-props="label:'About Us',moveTo:'Aboutusview',transition:'flip',dir:'-1'" data-dojo-type="dojox.mobile.ListItem"></div>
                <div data-dojo-props="label:'Database',moveTo:'Databaseview',transition:'flip',dir:'-1'" data-dojo-type="dojox.mobile.ListItem"></div>
                <div data-dojo-props="label:'Software',moveTo:'Softwareview',transition:'flip',dir:'-1'" data-dojo-type="dojox.mobile.ListItem"></div>
                <div data-dojo-props="label:'Research',moveTo:'Researchview',transition:'flip',dir:'-1'" data-dojo-type="dojox.mobile.ListItem"></div>
                <div data-dojo-props="label:'Products',moveTo:'productsview',transition:'flip',dir:'-1'" data-dojo-type="dojox.mobile.ListItem"></div>
                <div data-dojo-props="label:'Contact Us',moveTo:'Contactusview',transition:'flip',dir:'-1'" data-dojo-type="dojox.mobile.ListItem"></div>
            </div>
        <!--application UI goes here-->
        </div>
        <div data-dojo-type="dojox.mobile.View" id="Aboutusview"></div>
        <div data-dojo-type="dojox.mobile.View" id="Softwareview"></div>
        <div data-dojo-type="dojox.mobile.View" id="Databaseview"></div>
        <div data-dojo-type="dojox.mobile.View" id="Researchview"></div>
        <div data-dojo-type="dojox.mobile.View" id="productsview"></div>
        <div data-dojo-type="dojox.mobile.View" id="Contactusview"></div>
        <script src="js/initOptions.js"></script>
            <script src="js/AccordFintech.js"></script>
            <script src="js/messages.js"></script>
    </body>
</html>

.js file:

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

3条回答
地球回转人心会变
2楼-- · 2019-01-07 01:26

Let's back up just a bit. In nsand's post in regard to the Console View, what he was trying to determine is if your application is using the new Dojo Library Server that was introduced in 6.0. In short, for 6.0, your application only has within it Dojo Mobile Layers. Any other resources it needs, e.g. translations, dijit widgets, are being served from the server. You can read about it in the 6.0 Information Center: http://pic.dhe.ibm.com/infocenter/wrklight/v6r0m0/index.jsp?topic=%2Fcom.ibm.rad.worklight.doc%2Ftopics%2Fcdojolibprjsetupwl.html

If you follow nsand's steps for unchecking Provide Library Resources, this turns off your application's access to the Dojo Library/Server. All of its Dojo needs must be handled by the Dojo Mobile layers, or you had to have copied the needed resources into the project.

So Step 1: Verify your application works in the Mobile Browser Simulator with Provide Library Resources checked. If the Console log is showing resources being served from the server, then these have to be copied to your application before deploying to AVD or a device

Step 2: After you think you have all Dojo/resources within your project, uncheck Provide Library Resources and test it again in MBS. If it fails in MBS, then something is missing in your application that is in the library/server. You can check Provide Library Resources and retest to see if it shows you what that is. Not all resources are shown, e.g. if there's a missing CSS file.

Let us know if that helps you find the problem. If you uncheck Provide Library Resources and it works fine in MBS but fails on the device, then we need to look elsewhere.

(note: there is a defect that prevents you from using the Dojo Library/Server with AVD or on your device. This will be fixed soon. None the less, using the Dojo Library/Server is a development time concept. Before you move to production, you app needs access to all of the necessary resources w/o them being served from the Dojo Library/Server in Studio).

查看更多
祖国的老花朵
3楼-- · 2019-01-07 01:26

In addition to including the *_ROOT.js files, you may also need to remove the development configuration from the application. To do this, open the Console view (Window > Show View > Other... > Console). From the Console view, click the Open Console button and choose Dojo Library Requests from the list. From the Dojo Library Requests console, click the View Menu (the triangle in the toolbar), and uncheck Provide Library Resources. After this, build and deploy the application environment to your emulator or device.

查看更多
SAY GOODBYE
4楼-- · 2019-01-07 01:32

From the DojoLib project in Eclipse, copy the files:

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

Paste the files in your Worklight project under www\dojo\nls.

Try again to run the project.
There may be other changes required, but lets first see if the above works.

查看更多
登录 后发表回答