我正在编写一个使用Restkit等外部库的iOS库。在我的lib中一切正常但是当我使用Pods在其他项目中导入它时,只导入我的源代码。这意味着我没有像Restkit这样的外部依赖。
我在podspec文件中添加了:s.dependency'Restkit''〜> 0.24.0'
但我认为没有区别。我觉得我错过了什么,有人可以帮助我吗?
此致
修改
SDK podspec文件(重要部分):
# ――― Source Location ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.source = { :git => "***************.git", :tag => "0.0.1" }
# ――― Source Code ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
s.source_files = "bee-ios-sdk/sdk", "bee-ios-sdk/sdk/**/*.{h,m}"
s.exclude_files = "bee-ios-sdk/sdk/Exclude"
# s.public_header_files = "Classes/**/*.h" # Maybe this ?
# ――― Project Settings ――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
# s.requires_arc = true
# s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" }
s.dependency 'RestKit', '~> 0.24.0'
s.dependency 'CocoaSecurity'
我的应用程序中的Podfile
target 'bee' do
pod 'bee-ios-sdk' # Private pod repository containing the podspec above
end
希望有所帮助
编辑2
$ pod install
Analyzing dependencies
Downloading dependencies
Installing bee-ios-sdk (0.0.1)
Generating Pods project
Integrating client project
正如你所看到的,我只有我的资料来源。在我尝试构建时,没有任何RestKit和其他导致我发现'RestKit / RestKit.h'文件的错误。在我的App podfile中添加我的所有SDK依赖项可以解决问题,但这显然不是性感的..
我的podfile顶部没有源'github.com/CocoaPods/Specs.git'? 现在,我的podfile(app)请求包含我的sdk url的.podspec文件的私有git repo。我按照tutorial进行了操作。
答案 0 :(得分:3)
我已经使用Cocoapods构建了几个内部库,虽然我无法立即理解为什么你无法正确地获得依赖关系,但我认为概述我是如何做的可能是个好主意。
概括地说,典型安装(从头开始)具有以下步骤:
sudo gem install cocoapods
)步骤1很简单,让我们从2开始:
您应该可以通过推送访问将容纳您的广告连播的git位置。设置此repo后,您可以将其添加到您的安装中:
pod repo add internalpods 'github.com/private-cocoapodsspecs.git'
当然,我已经放入了一个伪造的git url
创建规范很简单:
pod spec create SPEC_NAME
您希望将SPEC_name称为
我不会在这里详细介绍,因为您的规格对我来说似乎很好。但是,我尝试做的事情总是将一个Example项目放在您检查规范的存储库中。 cocoapods的一个很棒的功能是你可以在本地参考规格。所以说我们编写AFNetworking,git中的文件结构可能如下所示:
AFNetworking
.git
AFNetworking.podspec
AFNetworking/
(All the classes we want in our pods)
ExampleProject/
(Example project that will use the spec locally)
podfile
在Example Project的podfile中,我们可以这样做:
source 'https://github.com/CocoaPods/Specs.git' #include this if you will be referencing any public pods!
source 'github.com/private-cocoapodsspecs.git' #our internal repo which we don't need yet
pod 'AFNetworking', :path => '..'
这使您可以在运行任何安装或推送到服务器之前获取您的pod是否存在任何问题,因此我非常喜欢这种方法。它还允许您开发pod并拥有一个很好的示例项目,您可以随时打开该项目以对您的pod进行更改或测试新功能。
在示例项目中运行pod install
可以让您启动并运行pod和所有依赖项。不要忘记您始终可以将--verbose
添加到安装中。
现在是时候把你的善良送到遥控器了:
linter将验证您的规范以确保其准备就绪(请注意我如何包含内部遥控器的源URL):
pod spec lint --sources=github.com/private-cocoapodsspecs.git,https://github.com/CocoaPods/Specs.git --verbose
如果这一切都很棒你可以继续推进。我通常喜欢在这样做时允许警告,因为我们的内部pod没有许可证,如果你试图在没有许可证的情况下推送,一切都会崩溃:
pod repo push internalpods SPEC_NAME.podspec --allow-warnings --verbose
了解我如何使用我们在步骤1中设置的internalpods名称。
希望这应该足以帮助。
答案 1 :(得分:1)
CocoaPods是一款非常简单易用的工具。大部分时间你都不想手动导入它生成的项目。
要将Pods依赖项添加到项目中,您需要:
sudo gem install cocoapods
pod 'Restkit', '~> 0.24.0'
。有关更多选项,请查看CocoaPods Guide page pod install
。 此命令将下载依赖项并在.xcodeproj附近创建.xcworkspace文件。运行完毕后 - 请务必打开 .xcworkspace 文件。
现在,您应该能够在工作区中看到名为Pods的新项目 - 这是构建所有依赖项并将其添加到主项目的位置:Screenshot