我正在构建一个Cocoapod,它允许Pod用户有选择地使用Google Sign In--我正在尝试将Google Sign In作为subspec包含在Cococapod Subspec中。直接使用它,例如,在子规范中,类似于:
s.subspec 'Google' do |google|
google.dependency 'GoogleSignIn'
end
似乎无法工作,因为它会导致可传递的静态框架包含错误。
通过直接包含相关的Google框架,我的运气要好一些。也就是说,通过在这里下载框架:https://developers.google.com/identity/sign-in/ios/sdk/,将它们放到我的Cocoapod项目中,然后使用:
s.subspec 'Google' do |google|
google.xcconfig = {
'OTHER_SWIFT_FLAGS' => '$(inherited) -DSYNCSERVER_GOOGLE_SIGNIN',
'OTHER_LDFLAGS' => '$(inherited) -ObjC'
}
google.pod_target_xcconfig = {
'FRAMEWORK_SEARCH_PATHS' => '$(inherited) $(PODS_TARGET_SRCROOT)/SDKs/google_signin_sdk_4_1_2'
}
google.frameworks = ['GoogleSignIn', 'GoogleSignInDependencies']
google.resource_bundles = {
'GoogleSignIn' => ['$(PODS_TARGET_SRCROOT)/SDKs/google_signin_sdk_4_1_2/*.bundle']
}
end
当我在本地使用它时,上面的代码将构建到我的项目中。也就是说,当我在我的Podfile中执行以下操作时:
pod 'SyncServer/Google', :path => '..'
但是,如果我尝试验证podspec以准备将其提交到我的Git代码库:
pod lib lint
我得到以下错误:
GoogleSignIn
的resource\_bundles
模式与任何文件都不匹配。- ERROR | iOS xcodebuild:返回不成功的退出码。您可以使用--verbose
获取更多information.有什么想法吗?谢谢。
进一步评论1)我怀疑我的问题与我对$(PODS_TARGET_SRCROOT)的使用有关。SDKs目录位于我的项目的根目录中。在使用带有本地路径引用的pod时,$(PODS_TARGET_SRCROOT)
似乎解析到根目录,但在尝试链接项目时却不是这样。
发布于 2018-06-08 09:04:56
要直接依赖像GoogleSignIn
这样的静态vendored_framework,可以使用static_framework podspec attribute。
https://stackoverflow.com/questions/50750862
复制相似问题