【问题标题】:Reading documents does not work with new PhoneGap Build阅读文档不适用于新的 PhoneGap Build
【发布时间】:2015-10-29 14:54:49
【问题描述】:

谁能帮我解决我在 PhoneGap 上遇到的问题。我构建了一个应用程序,它曾经在构建 3.7.0(默认)上正常工作。可以读取文件夹内容等的代码可以正常工作。现在我尝试在 5.2.0 的新默认版本上进行编译,但此代码不起作用。读取文件夹/文件和写入文件夹/文件不再起作用。所以我去了 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 api build documents


    【解决方案1】:

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

    <content src="index.html" />
    

    以及所有“功能”参数...我能够上传到 PhoneGap Build 并使用 3.7.0 进行编译。但是,此时无法读取文档内容。

    【讨论】:

    • 您想迁移到 Cordova 5.x 吗?您的问题有解决方案。
    • 当然,我愿意试试这个。这适用于 Android 和 iOS 吗?
    【解决方案2】:

    @尤拉,
    在收到您的回复后的几天内,Cordova 团队再次做出了改变。这是我建议人们在编译器和插件中使用版本的原因之一。否则,您的代码将按照 Cordova 团队的意愿运行。

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

    无论如何,你还有很长的路要走,还有很多事情要做。

    1. 移动到 source=npm 带有破折号的新名称。不需要。
    2. 您拥有所有核心 Cordova 插件。删除不需要的。
    3. &lt;feature (...)&gt; 不适用于 Phonegap Build
    4. 实施whitelist。需要
      • Cordova 4.x、5.x 或更高版本(Google Play 需要)
      • Apple 的 iTunes

    这是您需要的文件。

    1. &2.Core Plugins Setup

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

    &lt;gap:plugin name=cordova-plugin-device source=npm version=1.0.1 /&gt;

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

    除了调试服务器功能之外,由于 PhoneGap API 是插件化的,因此功能标签在 PhoneGap Build 上基本上已被弃用。

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

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

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

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

    【讨论】:

    • 谢谢。我会试试看。
    • @Yura,昨晚我累了。所以我只是看到我犯了一个错误。我的意思是说“你需要新的 npm 名称(带有破折号)”你现在需要使用 source=npm;另一个存储库已死。我已经更正了原文。
    猜你喜欢
    • 2014-10-02
    • 1970-01-01
    • 2014-09-20
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    相关资源
    最近更新 更多