【问题标题】:File plugin not working with PhoneGap Build文件插件不适用于 PhoneGap Build
【发布时间】:2014-10-02 02:24:56
【问题描述】:

我已经为此奋斗了一段时间。我没有找到很多其他人遇到这个问题,而且我找到的人没有安装文件插件。

在我的例子中,File 插件是作为 File-Transfer 的依赖项安装的。

问题:当我直接从我的 PC 构建应用程序并将其安装到我的 Android 设备时,一切正常,但是当它使用 PhoneGap Build 构建时,它就不起作用了。

会发生什么:在 app.initialize() 中,我调用了 cordova.file.applicationStorageDirectory:

var app = {
    initialize: function() {
        this.bindEvents();
    },

    bindEvents: function() {
        document.addEventListener("deviceready", this.onDeviceReady, false);
    },

    onDeviceReady: function() {
        initApp();
        alert(1);
        alert(cordova.file.applicationStorageDirectory);
        alert(2);
    }
};

当我在本地构建和安装时,会显示所有三个警报,并且目录路径是正确的,但是当它由 PhoneGap Build alert(1); 构建时,会显示,但后两个调用不是。这让我相信 cordova.file 是未定义的。

我尝试使用 PhoneGap Build 的远程调试工具,但控制台中似乎没有打印任何内容,尽管文档中说应该这样做。

这里是安装的插件:

这是我的 config.xml:

<?xml version='1.0' encoding='utf-8'?>

<widget xmlns     = "http://www.w3.org/ns/widgets"
        xmlns:gap = "http://phonegap.com/ns/1.0"
        id        = "id-removed"
        version   = "0.0.0">

    <preference name="phonegap-version" value="3.3.0" />

    <name>Name removed</name>

    <description>
        Description removed.
    </description>

    <author email="email removed" href="removed">
        Removed
    </author>

    <content src="index.html" />

    <icon src="icon.png" />

    <preference name="Orientation" value="portrait" />

    <access origin="*" />

    <gap:plugin name="org.apache.cordova.camera" version="0.2.9"/>
    <gap:plugin name="org.apache.cordova.device-motion" version="0.2.6"/>
    <gap:plugin name="org.apache.cordova.device-orientation" version="0.3.5"/>
    <gap:plugin name="org.apache.cordova.file-transfer" version="0.4.2"/>
    <gap:plugin name="org.apache.cordova.geolocation" version="0.3.7"/>
    <gap:plugin name="org.apache.cordova.globalization" version="0.2.6"/>
    <gap:plugin name="org.apache.cordova.inappbrowser" version="0.2.4"/>
    <gap:plugin name="org.apache.cordova.network-information" version="0.2.7"/>
    <gap:plugin name="de.appplant.cordova.plugin.local-notification" version="0.7.4"/>
</widget>

感谢任何帮助。

【问题讨论】:

  • 你有没有检查过错误发生时的错误日志?您可以使用 logcat 或在 phonegap 构建中激活调试并使用 weinre 调试应用程序来检查它。
  • 我没试过logcat,但我试过weinre。我永远无法让它工作。设备已连接,但控制台中没有写入任何内容,即使我添加了 console.log() 调用以进行测试。
  • 我终于设法让 weinre 工作,但没有显示错误。 “1”打印到控制台,但就是这样。
  • 你为什么不尝试安装插件并且不相信它是作为依赖安装的?
  • 我试过了,结果一样。

标签: cordova phonegap-plugins phonegap-build


【解决方案1】:

好吧,我只是明白几小时前我的眼睛下面是什么:

In the official documentation,上面写着:

从 v1.2.0 开始,提供了指向重要文件系统目录的 URL。 [...]

当您使用 phonegap 构建平台构建项目时,最新的可用版本是 1.0.1

请看:https://build.phonegap.com/plugins/617

在这种情况下,cordova.file 将保持undefined。

Phonegap build 似乎在升级插件时遇到了一些困难,甚至是核心插件。

【讨论】:

  • 哦,是的,我明白了。我记得也读过那个,但在看版本时并没有把两个和两个放在一起。非常感谢!我最终使用了另一种完全使用 Google App Engine 和 Python 的解决方案,但我很高兴你找到了解释!
【解决方案2】:

试试这个

var debugFilePlugin = function(){
    try{
        if (cordova.file && typeof(cordova.file == 'object')) {
            alert(JSON.stringify(cordova.file));
            if (cordova.file.applicationStorageDirectory) {
                alert(cordova.file.applicationStorageDirectory);
            }
        } else {
            alert('cordova.file is a ' + typeof cordova.file + ' value.');
        }
    } catch(e){
        var t = typeof e ;
        if(t == "object") {
            alert(JSON.stringify(e));
        } else if (t == "string") {
            alert(e);
        } else {
            alert("typeof e =" + t);
        }
    }        
};

debugFilePlugin();

【讨论】:

  • 谢谢。这证实了我的怀疑——“cordova.file 是一个未定义的值。”现在我学会了一种新的调试方法,谢谢你;但是,我不明白为什么它是未定义的。该插件肯定已安装。
  • 我试图重现您的问题并且没有遇到任何困难,因为......我有完全相同的问题。我试图理解这个问题。你是如何创建你的项目的?使用科尔多瓦-cli? phonegap-cli ?在哪个版本?您是否在创建项目后对其进行了更新?
  • 我的本地项目是使用 Cordova CLI 3.5.0 版创建的。自项目创建以来,我没有更新 Cordova。我刚刚注意到我的 PhoneGap Build config.xml 版本为 3.3.0;虽然我不知道为什么这会有所不同,因为所有 PhoneGap Build 都需要 Web 文件,而不是 Cordova CLI 创建的实际项目文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 2013-02-20
相关资源
最近更新 更多