I have an app with a share extension. My app depends on CocoaLumberjack/Default
, and my share extension depends on CocoaLumberjack/Core
. When I build with use_frameworks!
, I get the following error:
$ rm -rf Pods Podfile.lock; pod install
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing CocoaLumberjack (2.0.3)
Generating Pods project
2015-10-28 10:46:04.015 ruby[53095:3440989] warning: The file reference for "CocoaLumberjack.framework" is a member of multiple groups ("Products" and "Products"); this indicates a malformed project. Only the membership in one of the groups will be preserved (but membership in targets will be unaffected). If you want a reference to the same file in more than one group, please add another reference to the same path.
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:
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,isa:PBXFileReference,name:CocoaLumberjack.framework,path:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR,,displayName:Pods_MyProject.framework,explicitFileType:wrapper.framework,includeInIndex:0,isa:PBXFileReference,name:Pods_MyProject.framework,path:Pods_MyProject.framework,sourceTree:BUILT_PRODUCTS_DIR,,displayName:Pods_MyShare.framework,explicitFileType:wrapper.framework,includeInIndex:0,isa:PBXFileReference,name:Pods_MyShare.framework,path:Pods_MyShare.framework,sourceTree:BUILT_PRODUCTS_DIR,,displayName:Products,isa:PBXGroup,name:Products,sourceTree:,/Products/children/displayName:CocoaLumberjack.framework,explicitFileType:wrapper.framework,includeInIndex:0,isa:PBXFileReference,name:CocoaLumberjack.framework,path:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR,/Products/CocoaLumberjack.framework
This is my 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
I was able to work around this problem by making both of my targets use the same CocoaLumberjack
subspec. My working Podfile
is below:
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
Why is this workaround necessary? What happens when I actually have different subspec dependencies between two targets?
EDIT
This looks related to CocoaPods Issue 4370. I posted my example project on github.
Problem fixed for me by following steps: (I have also done the changes as per @ale0xB suggested)
It's caused by duplicate files in different directories. Sometimes Xcode might make mistake and duplicate files when you move files to another directory.
My solution to find these duplicate files,
duplicateUUIDs.txt
Another method to find duplicate files
where
-path ./.git -prune -o
means to exclude.git
directory when findingThis is a bug in Cocoapods -And probably it won't be fixed in a long while-
Running
export COCOAPODS_DISABLE_DETERMINISTIC_UUIDS=YES
on the Terminal seems to suppress the warnings for now.EDIT Feb 2016:
In latest version of Cocoapods this has now been moved to the install section of the Podfile:
install! 'cocoapods', :deterministic_uuids => false
I encountered this error when adding an application extension.
I fixed it by repeating the
platform :ios, '7.0'
line present in my application target to my new target as well.Making sure the two targets use the same platform solved the issue for me.