Cordova 如何使用Ripple Emulator for Windows测试PhoneGap应用程序?

Cordova 如何使用Ripple Emulator for Windows测试PhoneGap应用程序?,cordova,ripple,Cordova,Ripple,Ripple emulator可以用于在Windows下测试PhoneGap应用程序吗? 要么我做了一些非常糟糕的事情,要么Ripple在这样的环境中根本不起作用 我已经从Chrome商店为Chrome安装了Ripple Emulator扩展。我将Chrome导航到我的移动应用程序(通过XAMPP在本地提供)。我单击了Chrome omnibar旁边的Ripple图标,并在打开的窗口中单击了启用。我选择了合适的平台(Cordova 2.0) 我的应用程序以类似移动设备的外观重新加载,模拟移动设备

Ripple emulator可以用于在Windows下测试PhoneGap应用程序吗?

要么我做了一些非常糟糕的事情,要么Ripple在这样的环境中根本不起作用

我已经从Chrome商店为Chrome安装了Ripple Emulator扩展。我将Chrome导航到我的移动应用程序(通过XAMPP在本地提供)。我单击了Chrome omnibar旁边的Ripple图标,并在打开的窗口中单击了启用。我选择了合适的平台(
Cordova 2.0

我的应用程序以类似移动设备的外观重新加载,模拟移动设备。Ripple无法从
config.xml
文件中读取我的配置,但这是一个众所周知的错误(报告和)。我希望,这不是一个阻止我使用Ripple的问题

我已经选择了我的设备(
三星Nexus
),并开始测试我的移动设备。即使是对PhoneGap API的第一次调用也失败了。我尝试了compass,但得到的结果是
无法调用未定义的方法“watchHeading”

如何定义基本PhoneGap对象?我错过了什么?我可以用Ripple Emulator在Chrome的Windows下测试PhoneGap应用程序吗?或者我完全不知道Ripple是什么

我试图帮助自己编写Ripple文档,但第“”章完全是废话。我在Ripple图标中甚至没有
启动Ripple服务
选项的标志(只有
启用
禁用
),当我单击
启用
时,没有许可协议的标志,我可以查看并接受。我感觉这个医生说的和我用的完全不同


如何使用Chrome中的Ripple来测试PhoneGap应用程序?我遗漏了什么?

Ripple应与最新版本的Phonegap配合使用,尽管在页面加载过程中可能会弹出一些虚假错误消息,这是因为Ripple与最新的Phonegap版本不太同步。确保已将Phonegap JS包含在页面中。请尝试以下示例-它在Ripple中对我很好:

<html>
    <head>
        <script type="text/javascript" charset="utf-8" src="cordova-2.8.0.js"></script>
        <script type="text/javascript">
        function deviceready() {
            console.log("Device ready");
            navigator.compass.watchHeading(function(heading){
                document.getElementById("heading").innerHTML = heading.trueHeading;
            },function(error){
                var errorType;
                switch(error.code){
                    case CompassError.COMPASS_NOT_SUPPORTED:
                        errorType = "Compass not supported";
                        break;
                    case CompassError.COMPASS_INTERNAL_ERR:
                        errorType = "Compass internal error";
                        break;
                    default:
                        errorType = "Unknown compass error";
                }
                document.getElementById("heading").innerHTML = errorType;
            });
        }
        document.addEventListener("deviceready", deviceready, true);
        </script>
    </head>
    <body>
        <h1>Test</h1>
        <p>Heading: <span id="heading"></span></p>
    </body>
</html>

函数devicerady(){
控制台日志(“设备就绪”);
导航器、指南针、手表航向(函数(航向){
document.getElementById(“heading”).innerHTML=heading.trueHeading;
},函数(错误){
var错误类型;
开关(错误代码){
不支持机箱CompassError.COMPASS\u:
errorType=“不支持指南针”;
打破
机箱CompassError.COMPASS\u INTERNAL\u错误:
errorType=“指南针内部错误”;
打破
违约:
errorType=“未知罗盘错误”;
}
document.getElementById(“heading”).innerHTML=errorType;
});
}
文件。添加的监听器(“DeviceRady”,DeviceRady,true);
试验
标题:

tl;dr:与PGB文档中所说的相反,您必须在应用程序的根目录中保留一份
cordova.js
文件的副本,并且该文件必须完全取自PhoneGap的2.0版,因为Ripple Emulator的最新版本既不适用于其他版本,也不适用于没有该文件的情况

解决方案 我正在使用PhoneGap构建而不是本地PhoneGap环境开发我的PhoneGap应用程序。所以——正如我被指示的那样——我已经从我的应用程序的webroot中删除了
phonegap.js
文件,只在
index.html
中留下了对它的引用。这对于PhoneGap构建来说很好,但对于Ripple Emulator来说绝对不是很好

自从我从
phonegap-2.0.0.zip的
lib\android\example\assets\www\
文件夹中放回该文件后(实际上是
cordova.js
),我设法查看许可证,启动Ripple服务并在本地测试工作的phonegap应用程序

请注意:Ripple Emulator的当前版本使用的是
Cordova 2.0
。请确保您下载了PhoneGap的正确版本,并从中获取
Cordova.js
!不要尝试从较新版本(当前为
3.0.0
)使用
Cordova.js
)因为您可能会遇到无法检测的情况,包括看到许多奇怪的
警报()
,甚至挂断过载的Chrome

始终确保您使用的是PhoneGap的JS文件版本,这是Ripple背后的版本

一步一步地 使用Chrome和Ripple Emulator在Windows下测试PhoneGap应用程序的关键步骤:

  • cordova.js
    文件放回您的文件夹根目录并检查对它的引用。您可以从任何可下载版本的PhoneGap的
    lib\android\example\assets\www\
    文件夹中获取它(您应该使用
    PhoneGap-2.0.0.zip
    ,请参见上文)

  • 使用Chrome应用商店为您的Chrome浏览器安装
    Ripple Emulator
    扩展。启用它

  • 启动本地Web服务器并通过它运行移动应用程序的HTML代码(在Ripple Emulator中主要可以通过直接文件访问进行测试,但不建议这样做,并且可能会产生不可预测的结果)

  • 单击Ripple Emulator图标,右键单击Chrome omnibar,然后单击启用(或右键单击页面,从上下文菜单中选择适当的选项)

  • 接受许可协议并选择合适的平台(
    Cordova 2.0.0

  • 再次单击Ripple Emulator图标,如果未自动启动Ripple服务,请单击启动Ripple服务

  • 设置目标平台(设备)并在本地使用PhoneGap应用程序

  • 版本和API不同
    var networkState = navigator.connection.type;
    
    var networkState = navigator.network.connection.type;
    
    var networkState = ((navigator.connection) ? navigator.connection.type : ((navigator.network && navigator.network.connection) ? navigator.network.connection.type : 'unknown'));
    
    var debugMode = typeof(window.tinyHippos) !== 'undefined';
    
    var networkState = (debugMode) ? navigator.network.connection.type : navigator.connection.type;