是否能够使用 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的主要内容,如果未能解决你的问题,请参考以下文章
Windows Phone 平台是不是支持应用程序开发人员的受限/测试版?