Xcode 4.5 没有这样的文件或目录 - libCordova.a
Posted
技术标签:
【中文标题】Xcode 4.5 没有这样的文件或目录 - libCordova.a【英文标题】:Xcode 4.5 no such file or directory - libCordova.a 【发布时间】:2012-10-03 21:00:41 【问题描述】:clang:错误:没有这样的文件或目录:'/Users/admin/Library/Developer/Xcode/DerivedData/__TESTING__-fzbkvdbnndieeagphtjhdndiyttl/Build/Products/Debug-iphoneos/libCordova.a'
我如何得到这个丢失的 libCordova.a ?
(来源:kerrydeaf.com)
更新:对于西蒙·杰曼。
更新:对于西蒙·杰曼。我没有看到“身份和类型”。我可以看到“身份”。我正在使用 xcode 4.5 (来源:kerrydeaf.com)
更新:对于西蒙·杰曼。我得到了身份。
(来源:kerrydeaf.com)
更新:给塞缪尔
(来源:kerrydeaf.com)
更新:对于 Simon Germain - 建筑。
更新:对于 james0n - armv。
(来源:kerrydeaf.com)
更新:对于 Simon Germain - 建筑。
更新:对于 james0n - armv。
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_CDVURLProtocol", referenced from:
objc-class-ref in AppDelegate.o
"_OBJC_CLASS_$_CDVViewController", referenced from:
_OBJC_CLASS_$_MainViewController in MainViewController.o
"_OBJC_METACLASS_$_CDVViewController", referenced from:
_OBJC_METACLASS_$_MainViewController in MainViewController.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
更新:对于 james0n - 有效架构。
(来源:kerrydeaf.com)
更新:现在解决了!!!确保所有用于 ios 6 的 armv7 和 armv7 都在 xcode 中。它奏效了。
【问题讨论】:
+1 获取屏幕截图。 【参考方案1】:对于您的项目,将构建设置“仅构建活动架构”设置为是。
(对于 CordovaLib 项目,也许还将架构构建设置设置为“标准(armv7,armv7s)”。)
【讨论】:
是的,我都做了。仍然与上面的屏幕截图相同的“架构 i386 的未定义符号:”。 似乎它仍在尝试为 i386 架构构建,但它不应该这样做。您是否尝试过清洁和重建?除了检查“有效架构”之外,i386 是否列在 CordovaLib 项目的“架构”设置中? 我试过清理和重建,但没有。是的,我在有效架构上看到了 i386 armv6 armv7。我该怎么办?摆脱 1386。 我想你不需要 i386 并且构建问题似乎是 i386 特定的,所以双击它并将其从有效架构中删除。 那么,我将只使用“armv7”或“armv7,armv7s”吗?然后从有效架构中删除“i386 armv6 armv7”?【参考方案2】:遇到(和其他许多人一样)同样的问题,这就是我所做的:
-
重做 Phonegap 的入门指南(包括下载
并再次提取源)
HelloWorld 应用也存在同样的问题
产品 - 干净
根据 james0n 的回答更改了“HelloWorld”和“CordovaLib”-项目(所以不是目标),设置:
架构:标准(armv7、armv7s)
仅构建活动架构:是
然后它神奇地起作用了,但我认为步骤 3 和 4 做到了。
【讨论】:
好的。在我重新开始之前。我从 Phonegap 下载的 Phonegap 2.1 文件夹中的 bin 和 CordovaLib 怎么办?我知道我必须将一个垃圾箱拖到我的桌面上? CordovaLib 呢?我是否应该不理会它并让 Therminal 来完成这项工作?或者将 bin 和 CordovaLib 都拖到我的笔记本电脑上?到目前为止,我已经在 Theminal 中创建了,但没有升级。【参考方案3】:只需要从 YourProject 和 CordovaLib 中删除 armv6:
这样做的后果是什么?显然,它仍在 iPhone 3GS 上运行,但不是以前的版本..
【讨论】:
据我所知,xcode 4.5 上没有 armv6?参见上面的屏幕截图。上面写着:标准(armv7,armv7s) 好的,我看到了您的 CordovaLib 屏幕截图,我想您的项目也是如此……抱歉,如果它不起作用。我有同样的错误信息,删除 armv6 解决它。 你说的是xcode 4.5和phonegap 2.0吗?还是 xcode 4.5 和 Phonegap 2.1? 最新版本:xCode 4.5 和 Phonegap 2.1【参考方案4】:我遇到了和你一样的问题,在模拟器上运行良好,但在设备上却没有。建议的答案都不适合我。
以下是对我有用的:
将部署目标设置为 v4.3,并在 CordovaLib
项目的项目设置中,将 Build Active Architecture Only
设置为 Yes
。 (您的主项目不需要)。
重要的是,做一个产品-> 清理并重建。
【讨论】:
您是否设法让设备使用上述方法工作? 这对我也很有效......毕竟以最低票数阅读答案是可行的。耶皮...【参考方案5】:确保 CordovaLib 的产品目标设置为右侧面板上的“相对于已构建产品”,左侧第一个选项卡,在“身份和类型”下。
【讨论】:
我不确定你想说什么。我已经包含了上面的屏幕抓取来说明一点。您是在谈论顶部/右侧的 xcode“身份”,在“身份”下读取“项目名称”吗? 查看屏幕截图如上:我没有看到“身份和类型”。我可以看到“身份”。我正在使用 xcode 4.5 您需要打开 CordovaLib 项目,在“Product”目录中,您应该会看到一个libCordova.a
文件(它可能是红色的)。单击它,您应该会看到我在屏幕截图中显示的内容。
是的。将屏幕抓取视为顶部。我得到了“身份”。但不是“身份和类型”。至少,CordovaLib 的产品目标设置为“相对于已构建产品”。
请问为什么设置 - CordovaLib 的产品目标设置为“相对于已构建产品”?什么原因?【参考方案6】:
从此处http://phonegap.com/download 下载 Cordova 安装程序。确保它与您当前使用的版本相同(例如 2.0)。
然后挂载在 ios 目录中找到的 dmg。
然后运行 .pkg 安装程序。
重启 Xcode。
【讨论】:
是的,我上周已经下载了 phonegap 2.0 并使用 terminal.app 安装了一个噩梦般的 phonegap 2.0 我不打算重复了。 我是说必须重新做。不是全部,只是我提到的步骤。不需要终端,它是一个 GUI 安装程序。它也不会取代或做任何破坏性的事情。 ios文件夹在lib文件夹中。 我已经按照说明安装了。但没有运气。仍然缺少 libCordova.a 尝试删除然后重新添加 CordovaLib xcode 项目。它应该在您的 Documents/CordovaLib 目录中。 好的,如果我这样做,我应该从哪个 CordovaLib 中获取重新添加,还是从我删除的同一个中重新添加?【参考方案7】:您必须运行更新脚本,我知道这样做可能会让人头疼,但这就是它所需要的。
从官方网站下载并打开Phonegap 2.1 包。打开终端窗口,cd到安装目录
您需要先创建一个新项目:
./create [project_folder_path] [package_name] [project_name]
然后你需要设置你的库的路径。
/update_cordova_subproject [xcodeproj file]
现在打开您的项目并将部署目标设置为 4.3,您应该可以开始使用了。希望有帮助
编辑:
这就是我的 CordovaLib 项目配置的样子
【讨论】:
好的,你怎么知道升级到Phonegap 2.1会解决它? 因为我一个小时前才遇到这个问题,我已经解决了。您需要选择 CordovaLib Project 并将架构更改为标准架构,它将通过。我花了一段时间才弄清楚。测试前不要忘记清理项目。 好的,我稍后升级到Phonegap 2.1。 我将 CordovaLib 放在哪里?我是把它单独放在随附的 Phonegap 2.1 文件夹中,还是将它拖放到我的文档中?请指教?到了 ./create ~/admin/medicine com.helloworld Hello World 看到这个链接:zsprawl.com/iOS/2012/10/installing-cordovaphonegap-2-1-for-ios 它非常好,但是我在哪里放 CordovaLib?【参考方案8】:另外 - 确保您一次打开的 PhoneGap Xcode 项目不超过一个 - 我遇到了两者之间的冲突。 “工作区已在另一个工作区中打开”类型的循环。
【讨论】:
这是如何工作的,因为我有一个 www 文件夹可以在 xcode 上使用。当 ./create a project on Therminal.app 并且 Therminal.app 有在项目中抛出一个新项目的坏习惯时,这是一个带有 phonegap 的预测。如果我通过 Therminal.app /upgrade “找不到文件或目录”进行升级,则会产生错误。这会是造成这么长时间问题的原因吗?也许如果我清除所有现有项目并从头开始? (在我尝试任何事情之前,我会备份我当前的项目)。【参考方案9】:在花费了数小时的更多错误之后,这对我有用。基本上结合了上述大部分内容:
-
从新的 Cordova 副本开始。如果你像我一样一直在弄乱它,它就不再新鲜了。
将 Cordova 文件移出下载目录(我倾向于不时清理该目录...)
按照 Phonegap 文档中的说明创建一个新项目,即将 ios/bin 文件夹拖到终端图标并在终端中运行创建脚本。无需运行 update_cordova_subproject 脚本。
在 XCode 中打开项目。
对于您的产品,将 iOS 部署目标设置为 4.3(我在项目和目标构建设置中都设置了 2 次)。
对于 CordovaLib.xcodeproj,在 Project Build Settings 中将 Build for Active Architecture 设置为 Yes。
清理并运行。
不要在任何架构列表中包含 armv7,因为它不会为设备构建。
在模拟器和装有 iOS 6 的 iPad 上测试。使用 Phonegap 2.1.0 和 XCode 4.5.1。
更新:如果你想支持 iPhone 5,你需要 armv7s。它需要 https://issues.apache.org/jira/browse/CB-1360 中的修复,这将在 Cordova 2.2.0 中。 (还没试过,正在做一个 iPad 项目。)
【讨论】:
有趣!!!您是在谈论 Phonegap 2.0 还是 2.1?还是 Phonegap 2.0 然后升级到 2.1?【参考方案10】:我通过从有效架构设置中删除 armv6 和 i386 架构来解决此问题
【讨论】:
【参考方案11】:我也有这个问题。我认为这是因为我之前安装了一个旧版本的 phone gap,它在 xcode 中安装了一些东西。我卸载了,然后重新安装了xcode。然后我运行了电话间隙附带的 Uninstall Cordova.applescript。这解决了红色 libCordova.a 的问题
【讨论】:
【参考方案12】:除了其他几个建议和帖子之外,我发现我只在 AdHoc 构建中遇到了这个问题。请注意,我在调试过程中发现了这一点,因为如果我将 Edit Scheme > Archive build configuration 设置为“release”,它会正常工作,但如果设置为 AdHoc,它会给我一个链接错误,告诉我这个文件不能发现:
/Users/jason/Library/Developer/Xcode/DerivedData/MommyNearest-ceourmykvgxdekbkmzenuvhcfnzk/Build/Intermediates/ArchiveIntermediates/MommyNearest/BuildProductsPath/Adhoc-iphoneos/libCordova.a
这实际上是问题所在的一个很好的线索,即 CordovaLib 子项目不知何故没有 AdHoc 配置(它只有“调试”和“发布”配置)。
因此,在构建 AdHoc 版本(与 Testflight 一起使用)时,它不会为该文件正确创建符号链接。一旦我向 CordovaLib 子项目添加了“AdHoc”配置,它就开始工作了。
【讨论】:
以上是关于Xcode 4.5 没有这样的文件或目录 - libCordova.a的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 5“错误:无法执行'codedesign'(没有这样的文件或目录)”
没有这样的文件或目录:xcode 8.2 中的“__entitlements”