iOS无法find插件,Android很好

我正在Phonegap / Cordova构build一个应用程序。 应用程序目前相当简单,但确实需要networking状态和地理位置插件才能正常工作。

到目前为止,我已经开发了这个应用程序(它只是由几个基本的HTML页面和一些JS在目前),它一直在正常工作。

今天早上我决定确保iOS的一切都很好。 绝对不会有什么惊喜,事实上并非如此。

所以…这似乎是一个插件的问题。 XCode吐出以下内容:

CDVPlugin class CDVLocation (pluginName: Geolocation) does not exist. 2013-10-18 11:24:29.437 Eye Cab[589:907] ERROR: Plugin 'Geolocation' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml. 2013-10-18 11:24:29.438 Eye Cab[589:907] -[CDVCommandQueue executePending] [Line 117] FAILED pluginJSON = [ "Geolocation1841912763", "Geolocation", "getLocation", [ false, 0 ] ] 

我想这意味着它不能加载地理位置插件。 我得到了一个类似的东西的networking连接插件。

下面是我从Phonegap项目截取的config.xml:

 <feature name="http://api.phonegap.com/1.0/device" /> <feature name="Geolocation"> <param name="ios-package" value="CDVLocation" /> </feature> <feature name="NetworkStatus"> <param name="ios-package" value="CDVConnection" /> </feature> 

我也尝试使用ID作为function名称(例如,org.apache.cordova.geolocation),但得到相同的问题。 事实上完全一样的错误。

在Android中一切正常; 在模拟器中,在我的Mac和设备上的Chrome。

我正在使用以下版本:

  • Phonegap 3.1.0-0.15.0
  • XCode 5.0
  • OSX 10.8.5
  • iOS 6.1.3(iPod Touch)
  • 适用于iOS 7的iOS模拟器

正确的文件位于项目的/ www / plugins /文件夹中:

  • org.apache.cordova.geolocation
    • 万维网
      • Coordinates.js
      • Position.js
      • PositionError.js
      • geolocation.js
  • org.apache.cordova.network信息
    • 万维网
      • Connection.js
      • network.js

任何人都可以为此提供帮助。 我已经浏览了其他问题,但没有运气。

马克的解决scheme工作,但没有必要,并会导致你失去自定义XCode项目。

对我来说固定的是:

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

对于未来的search者 – 解决scheme对我来说是来自另一个堆栈溢出响应,在这里: https : //stackoverflow.com/a/19501579/1245276

简而言之:1.删除./plugins/ios.json,2.然后删除./platforms/ios,3.然后运行cordova platform add ios 4.然后cordova build 。 删除ios.json有助于强制它重新编译插件,至less这就是我所理解的,并为我工作。

iOS缺less插件文件(.m和.h文件),必须通过调用cordova preparephonegap prepare来复制。 似乎没有很好的logging。

在我的情况下,我无法在plugins目录中findPlugin_name.m文件,所以我在构build阶段手动添加Plugin_name.m文件(可以在plugin-> src-> ios文件夹中findPlugin_name.m文件)和然后从ios.json文件(它出现在cordova-builds文件夹中)复制插件的function名称,并将其添加到config.xml文件(删除反斜杠)。 插件将正常工作。

注意: – 您可能需要添加包含在plugin_name.m文件中的构build阶段的所有文件。