是否能够使用 Ripple 模拟器测试 PhoneGap File API

Posted

技术标签:

【中文标题】是否能够使用 Ripple 模拟器测试 PhoneGap File API【英文标题】:Is it able to test PhoneGap File API with Ripple emulator 【发布时间】:2012-09-26 09:11:41 【问题描述】:

我正在使用PhoneGap(现在的Apache Cordova,版本为2.0)开发一个应用程序,并使用PhoneGap File API 来编写文件。

我使用的 File API 可以参考: http://docs.phonegap.com/en/2.0.0/cordova_file_file.md.html#File

我使用 Ripple Emulator (0.9.9beta) 从这里:https://developer.blackberry.com/html5/download 在 chrome 中测试我的应用程序。

但我发现 Ripple 无法正确处理 PhoneGap File API。

例如:

我想在 PERSISTENT 目录中创建一个文件 (root/foo.json)

function onSuccess(fileSystem) 
    fileSystem.root.getDirectory("dir", create: true, function(dirEntry)
        dirEntry.getFile("foo.json", create: true, function(fileEntry)       
            fileEntry.createWriter(function(writer)
                writer.write(JSON.stringify(fooData));
            , onfail);
        , onfail);
    , onfail);

function onfail(error)

    console.log(error.code);


// request the persistent file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onSuccess, onfail);

它在 ios 模拟器上运行良好,它确实在正确的位置创建了正确的文件,但在 chrome 中运行的 Ripple Emulator 中,我刚刚收到一个 onfail 回调,并得到错误代码 10 (FileError.QUOTA_EXCEEDED_ERR)。

我在这里也找到了有类似问题的人:Is it able to test phonegap application outside emulator?

但仍然没有答案。

Ripple 模拟器目前是否无法在 PhoneGap API 上正常工作?还是我错过了一些设置?

【问题讨论】:

我想我可能得到了答案,Ripple 目前支持 PhoneGap API 的子集,并且正在努力完成它:( rippledocs.tinyhippos.com/index.html#platforms/phoneGap 【参考方案1】:

发现问题。我需要在使用 PERSISTENT 文件系统对象之前授予配额。 https://developers.google.com/chrome/whitepapers/storage#persistent

// Request Quota (only for File System API)

window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024, function(grantedBytes) 
window.webkitRequestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler); 
, function(e) 
console.log('Error', e); 
);

Ripple-UI 似乎没有为我做这件事(我检查了 lib/ripple/fs.js 的源代码)。这就是为什么我总是收到 FileError.QUOTA_EXCEEDED_ERR。

【讨论】:

有趣。 Chrome 会自动为您执行此操作吗?如果是这样,我很好奇 Ripple 不会从运行它的浏览器继承行为。

以上是关于是否能够使用 Ripple 模拟器测试 PhoneGap File API的主要内容,如果未能解决你的问题,请参考以下文章

Ripple 模拟器无法在 Macos 上运行

Visual Studio Ripple仿真器

Windows Phone 平台是不是支持应用程序开发人员的受限/测试版?

在浏览器中模拟Cordova插件

jQuery Mobile无法在PhoneGap Windows Phone 8中运行

仿真器上的多点触控(Windows Phone 8.0)