阅读文档不适用于新的 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 之后,他们创建了一个补丁来解决这个问题。
总之,任重而道远。
- 移动到
source=npm 带破折号的新名称。不需要。
- 您拥有所有核心 Cordova 插件。删除那些你不需要的。
<feature (...)>
不适用于 Phonegap Build
- 实施
whitelist
。需要
- Cordova 4.x、5.x 或更好(Google 的游戏需要)
- Apple 的 iTunes
这是您需要的文件。
这是新系统的一个简单示例:
<gap:plugin name=cordova-plugin-device source=npm version=1.0.1 />
Aside from the debug-server feature, the feature tag is essentially deprecated on PhoneGap Build since PhoneGap APIs were pluginized.
关于这一点,我不会在这里放任何例子,因为系统可能会在 6 个月内发生变化。它有问题。
最后一件事,您错过了 SO 标签 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 之后,他们创建了一个补丁来解决这个问题。
总之,任重而道远。
- 移动到
source=npm带破折号的新名称。不需要。 - 您拥有所有核心 Cordova 插件。删除那些你不需要的。
<feature (...)>
不适用于 Phonegap Build- 实施
whitelist
。需要- Cordova 4.x、5.x 或更好(Google 的游戏需要)
- Apple 的 iTunes
这是您需要的文件。
这是新系统的一个简单示例:
<gap:plugin name=cordova-plugin-device source=npm version=1.0.1 />
Aside from the debug-server feature, the feature tag is essentially deprecated on PhoneGap Build since PhoneGap APIs were pluginized.
关于这一点,我不会在这里放任何例子,因为系统可能会在 6 个月内发生变化。它有问题。
最后一件事,您错过了 SO 标签 phonegap-build
,这可能是为什么花了这么长时间才得到这个答案。
让我知道进展如何。祝你好运