我有一个使用CocoaPods的iOS项目。一切工作都顺利进行,直到另一个开发人员开始从事同一项目。他做了一些更改(据我所知仅对代码进行了更改),并在存储库中创建了一个新分支。我已经签出他的分支并尝试构建它,但出现错误:找不到ASLogger / ASLogger.h文件。
即使删除整个项目并重新制作副本并使用“ pods install”。构建失败仍然存在。您知道问题可能在哪里吗?如果您需要更多信息,请询问。
我有一个使用CocoaPods的iOS项目。一切工作都顺利进行,直到另一个开发人员开始从事同一项目。他做了一些更改(据我所知仅对代码进行了更改),并在存储库中创建了一个新分支。我已经签出他的分支并尝试构建它,但出现错误:找不到ASLogger / ASLogger.h文件。
即使删除整个项目并重新制作副本并使用“ pods install”。构建失败仍然存在。您知道问题可能在哪里吗?如果您需要更多信息,请询问。
Answers:
更新资料
确保您的目标Podfile
包含link_with
缺少配置文件的目标。否则,Cocoapods只会默认设置第一个目标。例如
platform :osx, '10.7'
pod 'JSONKit', '~> 1.4'
link_with 'Pomo', 'Pomo Dev', 'Pomo Tests'
------结束更新
注意:请注意,您必须在Project-> Info-> Configurations中查找以下步骤。
我有类似的症状,发现该pods.xcconfig
文件未包含在target
我尝试构建的特定文件中。其他一些建议的解决方案也对我有用,但是这个解决方案似乎解决了部分潜在问题。
一种简单的解决方案是为没有一组目标的目标更改配置文件集。
link_with
指定其他目标对我有用。非常感谢。我刚刚花了几个小时。
link_with
在Cocoapods 1.0或更高版本中不受支持。
更新资料
自从我的原始答案以来,我已经对此进行了更新,得到了好评,所以我希望这会有所帮助。如果可以的话,希望它能使我重新投票。
如果未导入标头,则您可能在中存在冲突HEADER_SEARCH_PATHS
。尝试$(inherited)
在“构建设置”中添加到标题搜索路径,以确保它从CocoaPods中提取.xcconfig文件中包含的所有搜索路径。
这将有助于解决任何冲突,并正确导入您的源。
1.检查
构建设置->搜索路径->用户标题搜索路径->
2.检查导入样式(KEY POINT)(如果podfile
已设置)
use_frameworks!
在您看来File-Bridging-Header.h
,格式化程序应该像这样
#import "MBProgressHUD.h"
否则应该在下面
#import <MBProgressHUD.h>
3.那一定行得通!相信我
头文件,您将成为我的死...
最终通过添加(包括引号)使其生效
"${PODS_ROOT}/BuildHeaders"
到“用户标题搜索路径”条目,然后选中“递归”。
$(inherited)
(没有工作),但是添加了这个功能对我有用。
我发现${PODS_HEADERS_SEARCH_PATHS}
缺少它,并且在我的开发git分支中未定义它,因此我"$(SRCROOT)/Pods/Headers/"
以递归方式添加 了标题搜索路径
对我来说没关系
$(SRCROOT)/Pods/Headers
其他两个答案在这里都无济于事。我发现了其他2个可能会解决的问题:
Xcode项目(您的项目)中的Project-> Info-> Configurations应该设置为“ Pods”以进行Debug,Release(以及您拥有的其他功能)。请参阅“找不到标题-不包括搜索路径”
也许您必须使用link_with命令链接目标。请参阅“在静态库项目中找不到标题”
编辑 您可以通过以下方式检查符号链接:创建一个名为'check'的文本文件,不带扩展名。将这些行复制到其中:
file=/Users/youUserName/XcodeProjectName/Pods/BuildHeaders/SVProgressHUD/SVProgressHUD.h
if [[ ! -e $file && -L $file ]]; then
echo "$file symlink is broken!"
else
echo "symlink works"
fi
然后转到终端,转到检查文件所在的文件夹,然后键入
bash check
如果以上方法都不适合您,并且由于您只是use_frameworks!
在Podfile中切换到而发现了此错误,请继续阅读:
在了解到在我的特定情况下根本不涉及搜索头路径之前,我尝试了上述所有解决方案以及更多尝试。就是当您切换到use_frameworks!
Podfile时,您不再需要在桥接标头中包含框架,实际上Xcode会抛出非常无用的“无法找到标头”错误。
您需要做的是从桥接头文件中删除所有导入,然后import Module
根据需要在各个Swift文件中使用Swift ,就像在Swift框架中一样。
并且,如果您在Obj-C类中使用任何框架标头(在我的情况下,我们有一个使用FBSDK的便捷类),则需要将其从本地导入更改#import "Module.h"
为全局导入(这意味着更改为#import <Module/Module.h>
,应自动完成)当您开始输入框架名称时(在我的情况下是<AFNetworking/AFHTTPRequestOperationManager.h>
)。
编辑:从那以后我就知道做一个@import Module
使用伞文件,它更安全。
您是否尝试导入Cocoapods样式?
#import <ASLogger.h>
该网站上的信息尚不清楚,我提交了请求请求:
https://github.com/CocoaPods/cocoapods.org/pull/34
更新:他们拉了我的要求:)
在维基对如何解决这一问题的建议:
如果Xcode找不到依赖项的标头:
检查Pod头文件中Pod头文件是否正确符号链接,并且您没有覆盖HEADER_SEARCH_PATHS(请参阅#1)。如果Xcode仍然找不到它们,那么作为最后的选择,您可以添加导入内容,例如#import“ Pods / SSZipArchive.h”。
$(PROJECT_DIR)/Pods/Headers/Public/xxx/ios/xxx.h
,还有一个额外的ios
文件夹...
我是团队中唯一遇到相同问题的开发人员,它对每个人都适用,因此我意识到这必须是我的环境。我git clone
在另一个目录中尝试了同一个项目,并且完美地编译了它,然后我意识到它必须是Xcode将东西存放在我的项目路径中,“某处”是DerivedData文件夹,只需将其删除并做一个干净的构建即可项目,它为我工作。
您可以通过以下方法获取路径,甚至在finder中打开文件夹:
Xcode中 - > 首选项 - > 位置- > ** DerivedData
如果在“ Pod安装 ”或“ Pod更新 ” 之后出现构建错误,则可能是您的一个Pod已使用XCode 6.3构建,而您仍在使用旧版本。
就我而言,我必须将OSX从特立独行的系统更新为优胜美地系统,以使用Xcode 6.3并解决问题
对我而言,固定的Pods项目的iOS部署目标低于项目本身。与项目相同后,便可以找到头文件。
我发现将库作为Pod安装直接包含在内对动态库有帮助。例如,对于Firebase:
pod 'RNFirebase', :path => 'path/to/node_modules/react-native-firebase/ios'
或对于ASLogger:
pod 'ASLogger', :path => 'path/to/node_modules/aslogger/ios' // path to header files
更改或硬编码HEADER_SEARCH_PATHS
对我没有帮助。如果错误再次发生,则不必rm -rf node_modules
删除Pod文件等,我发现清除缓存非常有用。
对于本机,我运行
rm -rf $TMPDIR/react-native-packager-cache-*
rm -rf $TMPDIR/metro-bundler-cache-*
rm -rf $TMPDIR/metro-*
rm -rf $TMPDIR/react-*
rm -rf $TMPDIR/haste-*
rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
npm start -- --reset-cache
对于Xcode,我删除以下文件夹 ~/Library/Developer/Xcode/DerivedData
我通过要使用的拖放框架为Xcode 8.2.1解决了此问题。