我是XCode Mac和iPhone开发的新手。所以可能我在这里缺少明显的东西。
在尝试构建项目时,出现以下警告和错误。我无法弄清楚这里出了什么问题,我查看了this答案并检查了我的框架搜索路径值,并且 BuildSettings 中没有任何值。
ld: warning: directory not found for option '-F/Users/macbook/Desktop/<app_name>__main/build/Release-iphoneos'
ld: warning: directory not found for option '-F/Users/macbook/Desktop/<app_name>__main/build/Debug-iphoneos'
ld: framework not found Pods_<app_name>
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我已经好几个小时不停地跳头了,终于放弃了。
错误中提到的路径不存在,当我查看XCode项目中build
文件夹的位置时,我意识到它们位于共享目录~/Library/Developer/Xcode/DerivedData
中。所以我不明白为什么XCode在项目的相对路径中查找这些文件,而build
文件夹不存在。
我正在使用
XCode 10.1
CocoasPod 1.5.3 1.8.4
MacOS High Sierra
注意:同一工作空间可以在另一个系统上成功构建。
编辑:
如果我将project.pbxproj
从另一个系统复制到该系统上,则该计算机上的项目也将成功构建。 project.pbxproj
位于*.xcodeproj
文件下。
如果我选择 Generic iOS Device (通用iOS设备),该项目也会正常运行,但是一旦切换到其他任何目标设备,我都会遇到相同的错误。
编辑2:
我在folder/directory
左侧的面板中看到了几个红色的框架文件。
Foundation.framework
Pods_<application_name>.framework
解决方案:
所以现在我找到了我认为是解决方法的解决方案,而不是实际的解决方案。
在项目的文件夹结构中,我看到多个红色的.framework
文件。其中一些扩展名与xCode软件包中的扩展名不同。因此,我使用较新的扩展文件对其进行了更新,从而摆脱了大多数红色文件框架,仅在上面的错误中保留了一个 Pods_.framework 相同的框架。我从General
部分的“库和框架”列表中删除了该框架。完成该项目后,我可以很好地运行该应用程序。
但是,我注意到Pods_<app_name>.framework
文件在运行pod install
之后总是重新生成。因此,每次启动新工作区时,我都必须从列表中手动删除这种不需要的依赖关系,至少可以这样说。
因此,现在我正在寻找一种纠正此问题的方法,因此不必每次都删除Pods_<app_name>.framework
文件。
在寻找解决方案时,我发现了一个已关闭的 cocoapods
错误,该错误报告了较旧版本的相同问题。我丢失了线程,无法再次找到它,否则我将链接该错误。
正如答案的评论之一所述,我现在更新了椰壳足动物版本 1.8.4 。
修改3:
Podfile
# Uncomment this line to define a global platform for your project
# platform :ios, '7.0'
# Uncomment this line if you're using Swift
use_frameworks!
target '<app_name>' do
pod 'Google-Mobile-Ads-SDK', '~> 7.39.0'
end
答案 0 :(得分:0)
根据您的评论和构建日志,我相信podfile Pods_<application_name>
对您的项目不可用(已添加但未下载)。
Pod是一种在项目之间共享代码并维护版本控制的方法。
您只需要更新pod即可将其下载并添加到您的项目中。对于刚刚启动的终端应用程序,cd
到项目文件夹并启动pod update
(您可以参考https://freakycoder.com/ios-notes-12-how-to-update-pods-249ecf88fe57)
如果您尚未安装pod
,则可以前往https://guides.cocoapods.org/using/using-cocoapods.html
答案 1 :(得分:0)
每个Mac需要将Pod安装一次。 project.pbxproj
中设置的配置取决于计算机上的Cocoapods版本和Xcode版本。
尝试以下操作:
1-从本地项目中删除Podfile.lock
文件和Pods文件夹
2-删除“派生数据”文件夹的内容:~/Library/Developer/Xcode/DerivedData
3-运行命令:
pod deintegrate
4-运行命令
pod install
5-再次运行项目
答案 2 :(得分:0)
Xcode对于模拟器和真实设备具有不同的构建系统。因此,它将为两者生成不同的应用程序。如果您选择任何 Simulator 目标,则它将为模拟器构建应用程序;如果您选择 Generic iOS Device (通用iOS设备)或任何真实的设备目标,则它将构建不同的版本。
可能您正在使用为iOS设备构建的一些框架,所以 遵循以下步骤,
pod install
命令并删除 DerivedData 。 如果您不想在项目中添加整个框架代码,则可以在xcode项目中添加特定的(用于设备或模拟器)框架。 为此,请按照以下步骤操作,
.framework
文件。对于Google移动广告,您可以遵循this准则。将-ObjC
链接器标记添加到项目的构建设置中的其他链接器标记中
我希望这对您有用。
答案 3 :(得分:0)
我曾经遇到过这个问题,但是我已经用@alxlive答案的相同方式解决了它,并且有效。
由于我们已经安装了Pod,问题发生在我身上。
在那段时间里,我已经为我的项目安装了可可脚架。然后,我添加了2个新的Build Configurations
。
您的问题可能是相同的,因为您确实提到从其他系统复制其他project.pbxproj
,这使您的项目正常进行。所以可能是这样。
通过将deintegrate
和install
的容器重新打开,即可解决问题。
答案 4 :(得分:0)
在其他链接器标志中添加 -ObjC $(inherited) 修复了我的问题
答案 5 :(得分:0)
对我来说,这是因为配置名称中有一个空格,例如“开发调试”。一旦我删除了空间并将其设置为“DevelopmentDebug”,错误消息就消失了。