Hea*_*ers 20 ios-frameworks cocoapods
我有一个分享扩展的应用程序.我的应用程序取决于CocoaLumberjack/Default,我的共享扩展依赖于CocoaLumberjack/Core.当我构建时use_frameworks!,我收到以下错误:
$ rm -rf Pods Podfile.lock; pod install
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing CocoaLumberjack (2.0.3)
Generating Pods project
Run Code Online (Sandbox Code Playgroud)
2015-10-28 10:46:04.015 ruby [53095:3440989]警告:"CocoaLumberjack.framework"的文件引用是多个组的成员("Products"和"Products"); 这表明项目格式错误.只保留其中一个组的成员资格(但目标成员资格不受影响).如果要在多个组中引用同一文件,请在同一路径中添加另一个引用.
Integrating client project
Sending stats
Sending stats
Pod installation complete! There are 2 dependencies from the Podfile and 1 total
pod installed.
[!] [Xcodeproj] Generated duplicate UUIDs:
Run Code Online (Sandbox Code Playgroud)
PBXFileReference - /mainGroup/children/children:displayName:CocoaLumberjack.framework,explicitFileType:wrapper.framework,includeInIndex:0,isa:PBXFileReference,name:CocoaLumberjack.framework,path:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR,,displayName:CocoaLumberjack .framework,explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference,名称:CocoaLumberjack.framework,道:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR ,,显示名:Pods_MyProject.framework,explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference,名称:Pods_MyProject.framework,道:Pods_MyProject.framework,sourceTree:BUILT_PRODUCTS_DIR ,,显示名:Pods_MyShare.framework,explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference,名称:Pods_MyShare.framework,道:Pods_MyShare .framework,sourceTree:BUILT_PRODUCTS_DIR ,,显示名:产品,赛:PBXGroup,名称:产品,sourceTree:,/产品/儿童/显示名:CocoaLumberjack.framework,explicitFileType:wrapper.frame 工作,includeInIndex:0,赛:PBXFileReference,名称:CocoaLumberjack.framework,道:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR,/产品/ CocoaLumberjack.framework
这是我的Podfile:
workspace 'MyWorkspace'
xcodeproj 'MyProject/MyProject.xcodeproj'
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'
link_with 'MyProject', 'MyShare'
target :MyProject do
pod 'CocoaLumberjack', '~> 2.0.1'
end
target :MyShare do
pod 'CocoaLumberjack/Core', '~> 2.0.1'
end
Run Code Online (Sandbox Code Playgroud)
通过使我的两个目标使用相同的子CocoaLumberjack规范,我能够解决这个问题.我的工作Podfile如下:
workspace 'MyWorkspace'
xcodeproj 'MyProject/MyProject.xcodeproj'
use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'
link_with 'MyProject', 'MyShare'
target :MyProject do
pod 'CocoaLumberjack/Core', '~> 2.0.1'
end
target :MyShare do
pod 'CocoaLumberjack/Core', '~> 2.0.1'
end
Run Code Online (Sandbox Code Playgroud)
为什么这种解决方法是必要的?当我在两个目标之间实际上有不同的subspec依赖关系时会发生什么?
编辑
这看起来与CocoaPods Issue 4370有关.我在github上发布了我的示例项目.
ale*_*0xB 20
这是Cocoapods中的一个错误 - 可能它不会在很长一段时间内修复 -
export COCOAPODS_DISABLE_DETERMINISTIC_UUIDS=YES在终端上运行似乎压制了现在的警告.
编辑2016年2月:
在最新版本的Cocoapods中,现在已将其移至Podfile的安装部分: install! 'cocoapods', :deterministic_uuids => false
这是由于不同目录中的重复文件引起的。有时,当您通过拖动Xcode 的项目导航器(按打开)将文件移动到另一个目录时,Xcode 可能会出错并重复文件。这些重复的文件是孤立的,并且没有添加到 Xcode 项目中,因此一切正常。但是,接受了Development Pod中的所有文件,包括这些孤儿文件。Command + 1pod install
为了找到这些重复的文件,我有两种解决方案,如下:
解决方案1
find . -path ./.git -prune -o -type f -exec basename {} + | sort | uniq -d
Run Code Online (Sandbox Code Playgroud)
where表示查找时-path ./.git -prune -o排除目录.git
解决方案2
duplicateUUIDs.txtgrep -E '[a-zA-Z+]+\.(h|m|swift)' -o duplicateUUIDs.txt | sort | uniq -d
Run Code Online (Sandbox Code Playgroud)
下一步
删除不需要的文件。
通过以下步骤为我解决了问题:(我还按照 @ale0xB 建议进行了更改)
\n\n| 归档时间: |
|
| 查看次数: |
5530 次 |
| 最近记录: |