阅读文档不适用于新的 PhoneGap Build

Reading documents does not work with new PhoneGap Build

任何人都可以帮助我解决我在使用 PhoneGap 时遇到的问题。我构建了一个应用程序,它曾经在构建 3.7.0(默认)上运行良好。读取文件夹内容等的代码可以正常工作。现在我尝试在新的默认版本 5.2.0 上编译,但这段代码不起作用。读取 folders/files 和写入 folders/files 不再有效。所以我去了 phonegap 并上传了我的项目的新版本 config.xml 指向 3.7.0 的旧版本,它甚至不再在 phonegap 构建上编译。

不再适用于新 PhoneGap Build 的代码示例(但过去在 3.7.0 上运行良好):

var docPath;

document.addEventListener("deviceready", onDeviceReady, false);  

function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onFail);
}

function onFileSystemSuccess(fileSystem) {
    docPath = fileSystem.root;
    fileSystem.root.getDirectory("Documents", { create: true, exclusive: true }, getDirSuccess, onFail);
}

function getDirSuccess(dirEntry) {
    alert(JSON.stringify(dirEntry));
    var directoryReader = dirEntry.createReader();
    directoryReader.readEntries(readerSuccess, onFail);
}

function readerSuccess(entries) {
    var i;
    for (i = 0; i < entries.length; i++) {
        alert(entries[i].name);
    }
}

我的 Config.xml 文件的部分内容:

<access origin="*"/>
<preference name="SplashScreen" value="screen" />
<preference name="phonegap-version" value="3.7.0" />
<preference name="android-build-tool" value="ant" />

<preference name="orientation" value="portrait" />
<gap:plugin name="org.apache.cordova.battery-status" source="npm"/>
<gap:plugin name="org.apache.cordova.camera" source="npm"/>
<gap:plugin name="org.apache.cordova.media-capture" source="npm"/>
<gap:plugin name="org.apache.cordova.console" source="npm"/>
<gap:plugin name="org.apache.cordova.contacts" source="npm"/>
<gap:plugin name="org.apache.cordova.device" source="npm"/>
<gap:plugin name="org.apache.cordova.device-motion" source="npm"/>
<gap:plugin name="org.apache.cordova.device-orientation" source="npm"/>
<gap:plugin name="org.apache.cordova.dialogs" source="npm"/>
<gap:plugin name="org.apache.cordova.file" source="npm"/>
<gap:plugin name="org.apache.cordova.file-transfer" source="npm"/>
<gap:plugin name="org.apache.cordova.geolocation" source="npm"/>
<gap:plugin name="org.apache.cordova.globalization" source="npm"/>
<gap:plugin name="org.apache.cordova.inappbrowser" source="npm"/>
<gap:plugin name="org.apache.cordova.media" source="npm"/>
<gap:plugin name="org.apache.cordova.network-information" source="npm"/>
<gap:plugin name="org.apache.cordova.splashscreen" source="npm"/>
<gap:plugin name="org.apache.cordova.vibration" source="npm"/>
<gap:plugin name="cordova-plugin-flashlight" source="npm" />
<gap:plugin name="org.apache.cordova.console" source="npm"/>
<gap:plugin name="org.apache.cordova.network-information" source="npm"/>
<gap:plugin name="cordova-plugin-legacy-whitelist" source="npm" />

<icon src="icon.png"/>

<!-- for iOS -->
<feature name="Flashlight">
  <param name="ios-package" value="Flashlight" />
</feature>

<!-- for Android -->
<feature name="Flashlight">
  <param name="android-package" value="nl.xservices.plugins.Flashlight" />
</feature>

<!-- for WP8 -->
<feature name="Flashlight">
  <param name="wp-package" value="Flashlight" />
</feature>
</widget>

有什么建议吗?

通过从 cordova 中删除所有 NPM 插件并将 phonegap 版本放在我的 config.xml 顶部,然后我注释掉了

<content src="index.html" />

和所有 "feature" 参数...我能够使用 3.7.0 上传到 PhoneGap Build 和编译。但是,此时无法读取文档内容。

@Yura,
在您回复所需的天数内,Cordova 团队再次进行了更改。这是我建议人们在他们的编译器和插件中使用版本的原因之一。否则,您的代码将在 Cordova 团队的突发奇想下运行。

最新更改使插件名称中的句点(.)可用。直到几天前,您还必须使用新破折号 (-)。这会导致问题,因为带有句点 (.) 的名称并未被正式弃用。因此,在您最初 post 之后,他们创建了一个补丁来解决这个问题。

总之,任重而道远。

  1. 移动到 source=npm 带破折号的新名称。不需要。
  2. 您拥有所有核心 Cordova 插件。删除那些你不需要的。
  3. <feature (...)> 不适用于 Phonegap Build
  4. 实施whitelist。需要
    • Cordova 4.x、5.x 或更好(Google 的游戏需要)
    • Apple 的 iTunes

这是您需要的文件。

  1. &2.Core Plugins Setup

这是新系统的一个简单示例:

<gap:plugin name=cordova-plugin-device source=npm version=1.0.1 />

  1. 来自 Top Mistakes by Developers new to Cordova/Phonegap#12 reads:

Aside from the debug-server feature, the feature tag is essentially deprecated on PhoneGap Build since PhoneGap APIs were pluginized.

  1. HOW TO apply the Cordova/Phonegap the whitelist system

关于这一点,我不会在这里放任何例子,因为系统可能会在 6 个月内发生变化。它有问题。

最后一件事,您错过了 SO 标签 phonegap-build,这可能是为什么花了这么长时间才得到这个答案。

让我知道进展如何。祝你好运