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

iOS internal podspec installation not installing external Pods

我正在编写一个 iOS 库,它使用 Restkit 等外部库。在我的库中一切正常,但是当我使用 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' file not found 错误的痕迹。在我的应用程序 podfile 中添加我所有的 SDK 依赖项可以解决问题,但这显然不是很性感..

我的播客文件顶部没有来源 'github.com/CocoaPods/Specs.git'? 现在,我的 podfile(应用程序)请求一个私有 git 回购协议,里面有 .podspec 文件,其中包含我的 sdk 的 url。我按照这个 tutorial 去做了。

CocoaPods 是一个非常好用的工具。大多数时候你不想手动导入它生成的项目。

要向您的项目添加 Pods 依赖项,您需要:

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

此命令将下载依赖项并在您的 .xcodeproj 附近创建 .xcworkspace 文件。完成后 运行ning - 一定要打开 .xcworkspace 文件。

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

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

总的来说,典型的安装(从头开始)有以下步骤:

  1. 安装 cocopods 到你的机器 (sudo gem install cocoapods)
  2. 设置一个私人存储库来存放您所有的可可pods。
  3. 创建新的 pod 规范
  4. 运行 linter,然后将您的规范推送到 repo

第 1 步很简单,让我们从第 2 步开始:

设置一个私人存储库来存放您所有的可可pods

您应该拥有对 git 位置的推送访问权,您的 pods 将存放在该位置。一旦设置了这个 repo,你就可以将它添加到你的安装中:

pod repo add internalpods 'github.com/private-cocoapodsspecs.git'

自然是我装了个假的giturl

创建您的第一个规范

创建规范很容易:

pod spec create SPEC_NAME

其中 SPEC_NAME 是您希望规格的名称

我不会在这里详细介绍,因为您的规格对我来说似乎不错。但是,我尝试做的总是将一个示例项目放在您检查规范的存储库中。 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

在示例项目的 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 和 push

linter 将验证您的规范以确保它已准备好推送(请注意我如何为我们的内部遥控器包含源 url):

pod spec lint --sources=github.com/private-cocoapodsspecs.git,https://github.com/CocoaPods/Specs.git --verbose

如果一切顺利,您可以继续推进。我通常喜欢在执行此操作时允许警告,因为我们的内部 pods 没有许可证,如果您尝试在没有许可证的情况下推送,一切都会崩溃:

pod repo push internalpods SPEC_NAME.podspec --allow-warnings --verbose

看看我如何使用我们在步骤 1 中设置的内部pods 名称。

希望这些足以对您有所帮助。