我们将创建一个框架项目(让我们将其命名为 F ),以便在几个iOS应用程序项目中共享。 F 取决于几个第三方框架(由Cocoa pod分发)。
决定 F 将作为 .framework (而非pod)分发。
我们的想法是应用只会包含 F 。应用程序的开发人员甚至不需要知道 F 在内部使用其他一些框架。
我们将创建一个测试项目(让我们将其命名为 T )以测试 F 表现良好。
问题是如何组织它?
通常,我会在Xcode中制作 T 的 F 子项目:
T.xcodeproj
F.xcodeproj
然后我开发 F ,对其进行测试并最终将 F.framework 分发给处理这些应用的人。
但是在这种情况下, F 取决于pods。在pod install
之后,我得到F.xcworkspace
。显然,我无法使项目依赖于工作空间:
T.xcodeproj???
F.xcworkspace???
这是否意味着我无法将 T 和 F 项目结合起来(这样可以更轻松地开发框架和测试应用 T 同时)
答案 0 :(得分:1)
您应该能够将完整项目放在与您正在开发的框架相同的.xcodeproj中。我所做的是创建了一个示例应用程序(这里称为“TestRunner”),它将用于运行某些单元测试并在我的框架'.xcodeproj中显示一些基本功能作为目标。
通过这种方式,我们可以在同一个仓库中对框架和工作项目进行测试。这是结构的样子。
TestRunner是一个完整的应用程序,您可以在模拟器中运行并包含DCExtensions.framework。当我们构建DCExtension框架时,不包括TestRunner代码。我们安装的吊舱包括在内。
您的Podfile可能看起来像这样。
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
target 'DCExtensions' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for DCExtensions
pod 'Alamofire'
target 'DCExtensionsTests' do
inherit! :search_paths
# Pods for testing
end
end
target 'TestRunner' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for TestRunner
end