无法构建或编译 phonegap 2.1

Posted

技术标签:

【中文标题】无法构建或编译 phonegap 2.1【英文标题】:Unable to build or compile phonegap 2.1 【发布时间】:2012-10-16 10:45:12 【问题描述】:

系统信息。 Xcode:4.3.3 OSX:10.7.4

我已经下载了 phonegap 2.1(incubator-cordova-ios)。我已经使用文档中提到的命令行代码成功创建了项目。

$ ./path/to/cordova-ios/bin/create /path/to/my_new_cordova_project com.example.cordova_project_name CordovaProjectName

我使用下面的代码来构建我的项目。 $ /path/to/my_new_cordova_project/cordova/debug

当我尝试调试时,出现以下错误

/Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:252:14:错误:使用未声明的标识符“ABAddressBookCreateWithOptions”[3] if (&ABAAddressBookCreateWithOptions != NULL) ^ /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:253:24:警告:函数 'ABAddressBookCreateWithOptions' 的隐式声明在 C99 [-Wimplicit-function-declaration,3] 中无效 addrBook = ABAddressBookCreateWithOptions(NULL, NULL); ^ /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:253:22:253:24-253:66:警告:分配给“ABAddressBookRef”的整数到指针转换不兼容(又名“const void *” ) 来自 'int' [3] addrBook = ABAddressBookCreateWithOptions(NULL, NULL); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:326:96:326:96-326:139326:109-326:139:错误:Objective-C 指针类型的转换' id' 到 C 指针类型 'ABRecordRef'(又名 'const void ')需要桥接转换 [4] CDVContact xferContact = [[CDVContact alloc] initFromABRecord:(ABRecordRef)[foundRecords objectAtIndex:k]]; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:326:97:注意:使用__bridge直接转换(所有权不变)[4] CDVContact* xferContact = [[CDVContact alloc] initFromABRecord:(ABRecordRef)[foundRecords objectAtIndex:k]]; ^ _桥 修复它:“/Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m”:326:97-326:97:“_bridge” /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:326:97:注意:使用 __bridge_retained 使 ARC 对象可用作 +1 'ABRecordRef'(又名 'const void ')[4 ] CDVContact xferContact = [[CDVContact alloc] initFromABRecord:(ABRecordRef)[foundRecords objectAtIndex:k]]; ^ __bridge_retained 修复它:“/Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m”:326:97-326:97:“__bridge_retained” /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:338:92:338:92-338:135338:105-338:135:错误:Objective-C 指针类型的转换' id' 到 C 指针类型 'ABRecordRef'(又名 'const void ')需要桥接转换 [4] CDVContact testContact = [[CDVContact alloc] initFromABRecord:(ABRecordRef)[foundRecords objectAtIndex:j]]; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:338:93:注意:使用__bridge直接转换(所有权不变)[4] CDVContact* testContact = [[CDVContact alloc] initFromABRecord:(ABRecordRef)[foundRecords objectAtIndex:j]]; ^ _桥 修复它:“/Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m”:338:93-338:93:“_bridge” /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:338:93:注意:使用 __bridge_retained 使 ARC 对象可用作 +1 'ABRecordRef'(又名 'const void ')[4 ] CDVContact testContact = [[CDVContact alloc] initFromABRecord:(ABRecordRef)[foundRecords objectAtIndex:j]]; ^ __bridge_retained 修复它:“/Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m”:338:93-338:93:“__bridge_retained” /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:560:21:560:23-560:67:警告:分配给“ABAddressBookRef”的整数到指针转换不兼容(又名“const void *” ) 来自 'int' [3] addressBook = ABAddressBookCreateWithOptions(NULL, &error); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/virtusa3/pgt/myproject1/CordovaLib/Classes/CDVContacts.m:562:9:警告:函数“ABAddressBookRequestAccessWithCompletion”的隐式声明在 C99 [-Wimplicit-function-declaration,3] 中无效 ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool grant, CFErrorRef error) ^ 生成 4 个警告和 3 个错误。

【问题讨论】:

【参考方案1】:

似乎与使用旧版本 Xcode 在 Snow Leopard 上构建的其他人报告的此问题有关: Running ./cordova/debug / cordova/emulate causes errors"

似乎有修复它的计划,但更新到 Mountain Lion 和 Xcode 4.51 将修复它。它对我有用。

【讨论】:

以上是关于无法构建或编译 phonegap 2.1的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile无法在PhoneGap Windows Phone 8中运行

PhoneGap 构建 - 位置 API 超时

Phonegap 条码扫描仪无法识别 windows phone 上的任何条码

ionic 和 phonegap 构建(3.5.0)不显示自定义启动画面

无法使用PhoneGap在Windows Phone 7中调用Ajax方法

带有 AngularJS 的 Windows Phone 8.1 上的 Phonegap 无法从我的 API 中检索 JSONP