没有findPhonegap 3.0 IOS插件

我在XCode中得到这个错误:

2013-08-23 14:36:18.284 Tell The DJ[14955:c07] ERROR: Plugin 'Device' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml. 2013-08-23 14:36:18.284 Tell The DJ[14955:c07] -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [ "Device1096677259", "Device", "getDeviceInfo", [ ] ] 2013-08-23 14:36:18.285 Tell The DJ[14955:c07] CDVPlugin class CDVConnection (pluginName: NetworkStatus) does not exist. 2013-08-23 14:36:18.285 Tell The DJ[14955:c07] ERROR: Plugin 'NetworkStatus' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml. 2013-08-23 14:36:18.285 Tell The DJ[14955:c07] -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [ "NetworkStatus1096677260", "NetworkStatus", "getConnectionInfo", [ ] ] 

我使用命令行界面安装了Phonegap 3.0,并将我的www文件粘贴到项目文件夹中。 该应用程序工作正常,但当我来到本机function,如设备ID,相机,networking连接失败,并得到我这个错误。 但我认为我的config.xml是正确的?

 <?xml version='1.0' encoding='utf-8'?> <widget id="io.cordova.helloCordova" version="2.0.0" xmlns="http://www.w3.org/ns/widgets"> <name>Hello Cordova</name> <description> A sample Apache Cordova application that responds to the deviceready event. </description> <author email="dev@cordova.apache.org" href="http://cordova.io"> Apache Cordova Team </author> <content src="index.html" /> <feature name="LocalStorage"> <param name="ios-package" value="CDVLocalStorage" /> </feature> <access origin="http://dev.tellthedj.de" /> <preference name="KeyboardDisplayRequiresUserAction" value="true" /> <preference name="SuppressesIncrementalRendering" value="false" /> <preference name="UIWebViewBounce" value="true" /> <preference name="TopActivityIndicator" value="gray" /> <preference name="EnableLocation" value="false" /> <preference name="EnableViewportScale" value="false" /> <preference name="AutoHideSplashScreen" value="true" /> <preference name="ShowSplashScreenSpinner" value="true" /> <preference name="MediaPlaybackRequiresUserAction" value="false" /> <preference name="AllowInlineMediaPlayback" value="false" /> <preference name="OpenAllWhitelistURLsInWebView" value="false" /> <preference name="BackupWebStorage" value="cloud" /> <preference name="orientation" value="portrait" /> <preference name="webviewbounce" value="false" /> <preference name="prerendered-icon" value="true" /> <preference name="phonegap-version" value="3.0.0" /> <preference name="fullscreen" value="false" /> <preference name="stay-in-webview" value="false" /> <preference name="android-minSdkVersion" value="7" /> <preference name="android-installLocation" value="internalOnly" /> <preference name="target-device" value="universal" /> <preference name="autohide-splashscreen" value="true" /> <preference name="load-url-timeout" value="60000" /> <preference name="show-splashscreen-spinner" value="true" /> <preference name="show-splash-screen-spinner" value="true" /> <preference name="allow-inline-media-playback" value="false" /> <preference name="launch-mode" value="standard" /> <feature name="Media"> <param name="ios-package" value="CDVSound" /> </feature> <feature name="Camera"> <param name="ios-package" value="CDVCamera" /> </feature> <feature name="Console"> <param name="ios-package" value="CDVLogger" /> </feature> <feature name="Device"> <param name="ios-package" value="CDVDevice" /> </feature> <feature name="Notification"> <param name="ios-package" value="CDVNotification" /> </feature> <feature name="File"> <param name="ios-package" value="CDVFile" /> </feature> <feature name="FileTransfer"> <param name="ios-package" value="CDVFileTransfer" /> </feature> <feature name="Geolocation"> <param name="ios-package" value="CDVLocation" /> </feature> <feature name="Capture"> <param name="ios-package" value="CDVCapture" /> </feature> <feature name="NetworkStatus"> <param name="ios-package" value="CDVConnection" /> </feature> <feature name="SplashScreen"> <param name="ios-package" value="CDVSplashScreen" /> </feature> <plugins> <plugin name="Device" value="CDVDevice" /> </plugins> </widget> 

我正在使用PhoneGap 3.0 / 3.1,并在重build之前删除本地生成文件夹(因为我不得不在副本生成脚本中复制图标和东西)。 这打破了我的插件,并产生了相同的错误信息。

最后,我发现在删除./plugins/ios.json时,必须删除./platforms/ios ,以确保重新生成插件。

删除platform / ios文件夹对我来说不是一个解决scheme,因为所有对xcode项目的手动定制都将丢失。

但是有一个简单的方法:

在XCode中,转到Build Phases – >打开Compiled Sources下拉菜单。 单击+并添加应该在插件目录中(但从编译的源丢失)的缺less的插件.m文件。

这个解决scheme来自另一个堆栈溢出的答案,在这里: https : //stackoverflow.com/a/21148428/80254

另一种select:

在xcode中确保插件的源文件具有“目标成员资格”设置集:在文件资源pipe理器中,转到插件> CDVDevice.m,并检查右侧的“目标成员资格”中是否有应用程序名称旁边的勾号xcode窗口的一面。 这实际上与其他解决scheme一样,但是更方便一些。

从这里: https : //stackoverflow.com/a/20576744/80254

我遇到了同样的问题。 我遵循Jeffrey Van Alstine的解决scheme。 这是我的脚本,用于构build和testing使用Phonegap 3.0 / 3.1开发的iOS应用程序。

 #!/bin/bash echo "Killing xcode..." kill $(ps aux | grep 'Xcode' | awk '{print $2}') rm -r platforms/ios rm plugins/ios.json phonegap build ios open platforms/ios/*.xcodeproj 

将其保存为一个bash文件,例如,将ios.sh到您的工作目录(包含www文件夹的目录)并运行./ios.sh

这似乎是3. *版本的已知问题

https://issues.apache.org/jira/browse/CB-4971

您可以通过将Phonegap升级到3.4版来解决此问题。

尝试重新安装插件:

phonegap本地插件添加https://git-wip-us.apache.org/repos/asf/cordova-plugin-device.git

我使用cordova3.7和我解决了与Kobkrit Viriyayudhakorn的解决scheme的问题,但当然,你需要使用

 cordova build ios 

代替

 phonegap build ios 

我想你需要为我使用正确的config.xml,它是Xcode项目目标文件夹config.xml,而不是平台www文件夹

我find了一个适合我的解决scheme。 我正在使用Compass插件,添加插件后,我注意到config.xml(插件文档)说它应该有

  <feature name="Compass"> <param name="ios-package" value="**CDVLocation**" /> </feature> 

而插件中的ios.json已添加

  "config.xml": { "/*": { "<feature name=\"Compass\"><param name=\"ios-package\" value=\"**CDVCompass**\" /></feature>": 1, "<feature name=\"Device\"><param name=\"ios-package\" value=\"CDVDevice\" /></feature>": 1 } 

其中一个是指CDVCompass,而另一个CDVLocation …更改xml到CDVCompass做了伎俩,现在该应用程序正在工作。

我很厌烦删除和重新添加插件问题的平台! 它似乎仍然是一个问题,甚至现在(2014年10月),如果你添加插件添加平台后,插件有时不传播到相应的平台文件夹/等。 注意这似乎主要影响iOS – 不是Android。

我认为我的解决scheme只是一个更新的方法做同样的事情bjunix发布较早 – 但在XCode 6修复这种事情,而不删除/重新添加我的平台我:

  • 展开左侧项目导航器面板中的我的App / Plugins文件夹
  • 点击列表中当前处于红色文本(每次一个)的每个插件文件
  • 跳到右侧(实用工具)面板,点击“身份和types”部分的文件夹图标,将其重新链接到实际文件(请参见下面的屏幕截图)。

做完上述我的项目后,最终build立。

在这里输入图像说明

发生这种情况时,似乎负责对pbxproj文件进行更改的xcode npm包有时会留下对已被删除的插件文件的引用。 我没有跟踪到这种情况发生的确切情况,但似乎发生频繁的插件删除/添加操作(例如更新插件)。

我怀疑,当一个插件被删除,xcode npm包在其作业失败时,它只能从PBXBuildFile部分删除插件文件引用,但没有其他部分,使pbxproj处于故障状态。

当xcode npm包尝试再次添加插件文件引用时,它首先检查引用是否已经在pbxproj中。 它看起来在PBXFileReference部分,因为它find了那里的插件引用,中止进一步处理,让我们无处可去。

我的解决scheme,虽然是一个黑客,但它是强制xcode npm包检查PBXBuildFile部分。 该部分将会丢失引用,并且插件将被正确地重新安装。

在这一行pbxFileReferenceSection pbxBuildFileSection更改为pbxBuildFileSection : https : //github.com/alunny/node-xcode/blob/master/lib/pbxProject.js#L620

重新安装你的插件,你应该很好去。

我的情况安装贝宝插件后,我面临的问题。

我通过在编译源代码中添加“PayPalMobileCordovaPlugin.m”来解决它。

所以你只需要在编译源文件中添加.m文件就可以了。

检查截图。 添加.m文件后的截图

希望为你工作

如果您有一个引用但未安装的插件,也会发生这种情况。 如果您已经尝试了上述解决scheme,并且找不到引用的插件的.m文件,则可能是该插件没有真正安装。

我会检查你的插件目录,确保里面有文件。 如果没有,请重新安装插件。 当我在git repo中从config.xml中恢复插件的时候遇到了一个错误,我碰到了这个问题。

我通过将“插件”条目更改为config.xml中的“function”条目来解决此问题。 (使用PhoneGap 3.1 / iOS)。 这是修复程序的样子:

 <feature name="DGGeofencing"> <param name="ios-package" value="DGGeofencing"/> </feature> 

我通过CLI工具完全重新安装了Node.js和Phonegap,解决了这个问题