我正在 Phonegap/Cordova 中构建一个应用程序。应用目前相当简单,但确实需要网络状态和地理定位插件才能工作。
到目前为止,我已经在 Android 上开发了该应用程序(目前它仅由一些基本的 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
]
]
我想这意味着它无法加载 Geolocation 插件。对于网络连接插件,我得到了类似的东西。
下面是我从 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 作为功能名称(例如 org.apache.cordova.geolocation),但遇到了同样的问题。事实上完全相同的错误。
在 Android 中一切都完美运行;在模拟器中,在我的 Mac 和设备上的 Chrome 中。
我正在使用以下版本:
- Phonegap 3.1.0-0.15.0
- XCode 5.0
- 操作系统 10.8.5
- iOS 6.1.3 (iPod Touch)
- iOS 7 的 iOS 模拟器
正确的文件在项目的/www/plugins/文件夹中:
- org.apache.cordova.geolocation
- 万维网
- 坐标.js
- 位置.js
- PositionError.js
- geolocation.js
- 万维网
- org.apache.cordova.network-信息
- 万维网
- Connection.js
- 网络.js
- 万维网
对任何可以提供帮助的人来说,一个欣喜若狂的拥抱。我已经浏览了其他问题,但没有运气。
最佳答案
Mark 的解决方案有效但不是必需的,并且会导致您丢失对 XCode 项目的自定义设置。
为我修复的是:
在 XCode 中,转到 Build Phases -> 打开 Compiled Sources 下拉菜单。单击 + 并添加缺失的插件 .m 文件,该文件应该位于您的插件目录中(但在编译的源代码中缺失)。
关于iOS 无法找到插件,Android 正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19447827/