iOS内部podspec安装不安装外部Pod

时间:2015-01-12 10:55:05

标签: ios xcode cocoapods

我正在编写一个使用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依赖项可以解决问题,但这显然不是性感的.. Pods directory

我的podfile顶部没有源'github.com/CocoaPods/Specs.git'? 现在,我的podfile(app)请求包含我的sdk url的.podspec文件的私有git repo。我按照tutorial进行了操作。

2 个答案:

答案 0 :(得分:3)

我已经使用Cocoapods构建了几个内部库,虽然我无法立即理解为什么你无法正确地获得依赖关系,但我认为概述我是如何做的可能是个好主意。

概括地说,典型安装(从头开始)具有以下步骤:

  1. 将cocopods安装到您的计算机上(sudo gem install cocoapods
  2. 设置一个私有存储库,用于存放所有cocoapod。
  3. 创建新的pod规范
  4. 运行linter,然后将规范推送到repo
  5. 步骤1很简单,让我们从2开始:

    设置一个包含所有cocoapods

    的私有存储库

    您应该可以通过推送访问将容纳您的广告连播的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添加到安装中。

    现在是时候把你的善良送到遥控器了:

    Lint and push

    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依赖项添加到项目中,您需要:

  • 确保您在终端运行中拥有最新版本的pod:sudo gem install cocoapods
  • 创建名为" Podfile"的文件(。不带扩展名)在.xcodeproj文件附近的项目目录中。
  • 编辑" Podfile"并将此行添加到它: pod 'Restkit', '~> 0.24.0'。有关更多选项,请查看CocoaPods Guide page
  • 保存文件
  • 如果Xcode仍处于打开状态,请将其关闭
  • 打开终端并cd到您项目的目录(其中" Podfile"所在位置)
  • 运行pod install

此命令将下载依赖项并在.xcodeproj附近创建.xcworkspace文件。运行完毕后 - 请务必打开 .xcworkspace 文件。

现在,您应该能够在工作区中看到名为Pods的新项目 - 这是构建所有依赖项并将其添加到主项目的位置:Screenshot