我花了数小时尝试扩展目标,以便从主目标使用单独的pod配置。原因是Pods与扩展目标重复,从而使整个应用程序的大小增加了两倍。需要使扩展仅包含那里必需的pod。
在将Extension扩展到主目标时,XCode似乎有一些魔力,CocoaPods似乎对整个过程一无所知?或者我做错了?我尝试了各种Podfile配置,没有任何作用。 任何人都能成功实现这一目标吗?
重现:
target 'MainTarget' do pod 'RestKit', '~> 0.20.3' pod 'AFNetworking', '~> 1.3.1' pod 'SSKeychain', '~> 1.2.0' pod "MagicalRecord/Shorthand", '~> 2.2' pod 'StyledPageControl', '~> 1.0' pod 'GoogleAnalytics-iOS-SDK', '~> 3.0.2' end target 'Extension' do pod 'AFNetworking', '~> 1.3.1' end
4次运行pod install
5 build
结果:
/Users/d/Library/Developer/Xcode/DerivedData/MainTarget-fvmcyblwdybpkdgfzflcjhqpjxab/Build/Products/Debug-iphonesimulator/libPods.a(AFHTTPRequestOperation.o)
/Users/d/Library/Developer/Xcode/DerivedData/MainTarget-fvmcyblwdybpkdgfzflcjhqpjxab/Build/Products/Debug-iphonesimulator/libPods-MainTarget.a(AFHTTPRequestOperation.o)
duplicate symbol _OBJC_IVAR_$_AFHTTPRequestOperation._successCallbackQueue in:
/Users/d/Library/Developer/Xcode/DerivedData/MainTarget-fvmcyblwdybpkdgfzflcjhqpjxab/Build/Products/Debug-iphonesimulator/libPods.a(AFHTTPRequestOperation.o)
/Users/d/Library/Developer/Xcode/DerivedData/MainTarget-fvmcyblwdybpkdgfzflcjhqpjxab/Build/Products/Debug-iphonesimulator/libPods-MainTarget.a(AFHTTPRequestOperation.o)
...(依此类推......每个文件重复4次。)
ld: 2148 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
答案 0 :(得分:3)
这是因为您至少要包括AFNetworking
两次。如果它是您的扩展程序中唯一需要的库,则应使用:
target 'Extension', :exclusive => true do
pod 'foo'
end
记录here
如果您希望所有图书馆都与您的扩展程序相关联,则应删除您的主要目标'分组并使用link_with
答案 1 :(得分:3)
感谢Keith Smiley,我想出了怎么做。 它需要我一点测试。这就是我做的事情
platform :ios, 7.0
link_with ['Target', 'Target todays widget']
pod 'AFNetworking', '~> 2.2'
在重做 pod安装之前,我必须删除libPods.a和其他,并且它有效。