Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Cordova 3.3.1-0.1.2(Phonegap)插件不';行不通_Android_Ios_Git_Plugins_Cordova - Fatal编程技术网

Android Cordova 3.3.1-0.1.2(Phonegap)插件不';行不通

Android Cordova 3.3.1-0.1.2(Phonegap)插件不';行不通,android,ios,git,plugins,cordova,Android,Ios,Git,Plugins,Cordova,我有一个针对iOS的cordova 3.3.1-0.1.2测试项目,我使用以下插件(cordova plugin ls): 我添加了这样的插件cordova plugin add org.apache.cordova.device。在我的git repo中,我看到它向plugins/org.apache.cordova.device目录添加了一堆文件,在我的iOS插件目录中创建了一个CDVDevice.h和一个CDVDevice.m,更新了iOS.json,更新*.xcodeproj文件,并将插

我有一个针对iOS的cordova 3.3.1-0.1.2测试项目,我使用以下插件(
cordova plugin ls
):

我添加了这样的插件
cordova plugin add org.apache.cordova.device
。在我的git repo中,我看到它向
plugins/org.apache.cordova.device
目录添加了一堆文件,在我的iOS插件目录中创建了一个
CDVDevice.h
和一个
CDVDevice.m
,更新了
iOS.json
,更新
*.xcodeproj
文件,并将插件添加到
platforms/ios/test-app/config.xml
中:

<feature name="Device">
    <param name="ios-package" value="CDVDevice" />
</feature>
窗口.plugins
对象仅将
pushNotification
插件作为属性列出。这很奇怪,因为它们都已经安装好了,在安装过程中,科尔多瓦说,一切都很好

我有点困惑,关于过时的,混合了phonegap文档,但如果其中一个可以工作的话,那就可以了。我还在
config.xml
中看到了一个插件定义,如下所示

<gap:plugin name="org.apache.cordova.device" />


有人能给我解释一下,有什么区别吗?我使用cordova 3.3的方式(使用
功能
)过时了吗?当我尝试使用
插件定义时,使用
gap:plugin
用于为phonegap构建配置插件(因此本地构建不需要它)


正如MBillau所建议的,只有在运行
cordova prepare ios
(或启动prepare然后构建项目的
cordova build ios
)后,插件才会添加到平台中

运行prepare时,插件的javascript文件应复制到
platforms/ios文件夹的
www/plugins/pluginfullname/www
文件夹中

如果文件不在那里,则可能是
ios.json
文件损坏的问题。在这种情况下,有时卸载然后重新安装插件可以解决问题。在某些情况下,您必须删除
ios.json
文件,清空项目根目录下的plugins文件夹(可能还有平台文件夹),然后重新安装所有插件


如果window.plugins对象仅列出pushnotification插件,这只是因为它是此对象中安装的唯一插件:

  • org.apache.cordova.console
    位于
    console
    cordova.logger
  • org.apache.cordova.device
    位于
    window.device
  • org.apache.cordova.splashscreen
    位于
    navigator.splashscreen

要知道要使用的javascript对象名称,您必须阅读插件的文档或查看插件的
plugin.xml
文件中的js module/clobbers属性。

检查index.html文件是否有正确的


我在通过CLI创建新项目时遇到问题。index.html文件引用了phonegap.js而不是cordova.js,从cordova项目的根目录进入./platforms/ios/

cd platforms/ios
这里应该有一个./build文件夹-其中包含Cordova用于“延迟加载”的先前构建的包-即,Cordova不必经常从不同位置获取文件,而是将其存储在本地。然而,我发现这是有问题的

删除此文件夹:

sudo rm -r build
离开后,重建Cordova项目:

cordova build

然后它应该重新创建build文件夹,但更重要的是,您的插件将列在
config.xml

中。不幸的是,所有答案都不起作用。幸运的是,我在这个邮件列表中找到了解决方案:

他们说,这是Cordova3.3.1中的一个bug。在这个版本中,插件被复制到不同平台的
.staging
目录中

因此,使用npm降级到cordova 3.3.0现在起作用了(在Mac OS X上):

还要检查cordova是否也可以从phonegap安装。如果您仅使用cordova和非phonegap功能(如远程构建),则可以使用安全删除phonegap软件包

sudo npm remove -g phonegap
更新


当前版本3.4.0运行良好,没有此问题。

您是否运行了
cordova build
来准备/编译代码?是的,我运行了
cordova build
,它将所有内容复制到了正确的目录中,但仍然存在相同的问题,请回答!我查了一下,一切都很好。文件被复制到目标,我有正确的名称,但在
devicerady
事件之后,它们仍然不可用。我还尝试删除整个插件,然后重新安装,但没有成功。还有什么我可以试试的吗?我忘了提到的一个文件是platforms/ios文件夹中www文件夹中的cordova_plugins.js。cordova.js使用此文件取消插件(它应该从ios.json构建)。如果它对你的项目不起作用,我建议清理plugins and platforms文件夹,重新安装插件或尝试一个新项目。Hmmm,
cordova_plugins.js
文件存在,并列出我安装的所有插件。但是删除所有插件,重新安装什么都不起作用。还有其他想法吗?
cordova build
sudo npm remove -g cordova
sudo npm view cordova versions
sudo npm install -g cordova@3.3.0-rc.1
sudo npm remove -g phonegap