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 prepare
或phonegap 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阶段的所有文件。