Android Cordova 3.3.1-0.1.2(Phonegap)插件不';行不通
我有一个针对iOS的cordova 3.3.1-0.1.2测试项目,我使用以下插件(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文件,并将插
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