3

我有一个包含 3 个项目的工作区:

  • 我的应用
  • 常见的
  • 豆荚

Common 是 MyApp 所依赖的公共库。我想设置 CocoaPods 和 Kiwi 在这个项目中正常工作。我该怎么做?

我找到了https://stackoverflow.com/a/16472563/62,但是当我尝试遵循这种方法时,在我尝试添加 Kiwi 之前构建 MyApp 时出现错误:

ld: library not found for -lPods

这是 GitHub 上的仓库:https ://github.com/lyahdav/cocoapods_kiwi_shared_library

我的 Podfile 是:

workspace 'MyApp.xcworkspace'
platform :ios, '7.0'

target 'Common' do
  xcodeproj 'Common/Common.xcodeproj'

  pod 'AFNetworking'
  pod 'Reachability'

  target 'MyApp', :exclusive => true do
    xcodeproj 'MyApp.xcodeproj'
  end
end
4

4 回答 4

2

我终于找到了一个可行的解决方案。这是 Pod 文件:

platform :ios, '7.0'

workspace 'MyApp.xcworkspace'

xcodeproj 'MyApp'

pod 'CupertinoYankee', '~> 1.0'

target :MyAppTests, :exclusive => true do
    pod 'Kiwi/XCTest'
end

target :Common, :exclusive => true do
    xcodeproj 'Common/Common'
    pod 'CupertinoYankee', '~> 1.0'
end

target :CommonTests, :exclusive => true do
    xcodeproj 'Common/Common'
    pod 'Kiwi/XCTest'
end

此示例 Podfile 显示 MyApp 和 Common 都配置为使用 Kiwi 进行测试,并且它们都可以使用 pod(在此示例中为 CupertinoYankee)。

我确实必须通过以下步骤在 Xcode 中手动配置 MyApp 与 Common 链接:

  1. 在 MyApp 项目设置 > MyApp 目标 > 构建阶段 > 将二进制文件与库链接 > 添加 libCommon.a
  2. 在 MyApp 项目设置 > 构建设置 > 用户标题搜索路径 > 添加${SRCROOT}/Common/Common/**

这个 repo 有一个工作示例:https ://github.com/lyahdav/cocoapods_kiwi_shared_library

我没有弄清楚的唯一有点烦人的事情是,是否有办法不复制我想在 MyApp 和 Common 中使用的每个 pod。如果有人有一个解决方案可以完成我的所有解决方案并解决了这个问题,我很乐意将其标记为已接受的答案。

于 2014-05-19T00:47:36.903 回答
1

由匿名用户发布为编辑。这是他的回答:


我已经对存储库进行了分叉,并对新的 cocoapods 版本进行了一些更改,以使其仍然可以工作。

platform :ios, '8.0'

workspace 'MyApp.xcworkspace'

project 'MyApp'

target :MyApp do
    pod 'CupertinoYankee', '~> 1.0'
end

target :MyAppTests do
    pod 'Kiwi/XCTest'
end

target :Common do
    project 'Common/Common'
    pod 'CupertinoYankee', '~> 1.0'
end

target :CommonTests do
    project 'Common/Common'
    pod 'Kiwi/XCTest'
end

https://github.com/chrishunterkiller/cocoapods_kiwi_shared_library

于 2016-06-23T15:18:30.703 回答
0

我不确定如何修复你的设置,但如果我是你,我会制作Common自己的 Pod。Pod 可以是私有的,仅作为存储库存储在 GitHub 中。当然,您需要一个 podspec,Common但我构建了一个示例来测试我们的构建服务的设置,我花了不到 30 分钟的时间就搞定了。

然后在 MyApp 的 Podfile 中,执行以下操作:

pod 'Common', :git => 'git@github.com:lyahdav/Common.git', :commit => 'a1b2c3d'

并且可以在 podspec 中引用AFNetworking(假设这是正确的依赖项)。ReachabilityCommon

此设置还允许您包含Common在您正在构建的任何其他应用程序中,而无需嵌入代码。同样,对您要达到的目标做出假设,因此如果不正确,请在问题中添加更多细节。

于 2014-04-01T06:21:15.530 回答
0

你可以破解一个可能再次被破坏的解决方案,或者更好的是,因为 Common 是你的库,所以也开始使用 CocoaPods 作为你的 Common 库。

它将显示为本地“Dvelopment Pod”,这意味着您也可以直接编辑库代码。

要轻松开始,只需在根文件夹中创建一个 Common.podspec:

$ pod lib create Common

然后只需编辑所需的最低参数,例如platform,source_files和如果有的话。requires_arcdependency

您可以查看更改库时的外观(并将其与手动创建的公共库进行比较):

$ pod lib lint --no-clean Common.podspec

最后从您的工作区中删除不再需要的 Common 并将其添加到您的 Podfile 中:

pod 'Common', :path => '../Relative/Path/To/CommonSources/'

这将花费您不超过 30 分钟的时间,并且您将在此过程中学到很多东西。

接下来,您可以看看制作私有pod 存储库。

于 2014-04-04T01:05:40.827 回答