Ios 如何在CoCoapod中构建具有多个目标的框架?
我编写了一个框架,我喜欢将框架划分为几个独立的子模块(目标)。苹果为我想用CocoaPods实现的目标提供了一个很酷的描述: 目标是包的基本构建块。目标可以定义模块或测试套件。 目标可以依赖于此包中的其他目标,也可以依赖于此包所依赖的包中的产品 我可以很容易地使用Swift Package Manager:Ios 如何在CoCoapod中构建具有多个目标的框架?,ios,swift,cocoapods,carthage,swift-package-manager,Ios,Swift,Cocoapods,Carthage,Swift Package Manager,我编写了一个框架,我喜欢将框架划分为几个独立的子模块(目标)。苹果为我想用CocoaPods实现的目标提供了一个很酷的描述: 目标是包的基本构建块。目标可以定义模块或测试套件。 目标可以依赖于此包中的其他目标,也可以依赖于此包所依赖的包中的产品 我可以很容易地使用Swift Package Manager: 目标:[ .目标公司(名称:“网络”), .target(名称:“服务”,依赖项:[“网络”]) ], 我可以在服务目标中使用导入网络,这很酷,因为它们是独立的模块,逻辑清晰 如何在Coc
目标:[
.目标公司(名称:“网络”),
.target(名称:“服务”,依赖项:[“网络”])
],
我可以在服务
目标中使用导入网络
,这很酷,因为它们是独立的模块,逻辑清晰
如何在CocoaPods和Carthage中实现它(我写的是一个框架,不是最终的应用程序)?
我所尝试的:
亚种
我尝试使用:
s.subsec‘服务’do | ss|
ss.dependency“MyFramework/Network”
ss.source_文件='Sources/Service/***.swift'
结束
s、 子类“网络”do | ss|
ss.source_文件='Sources/Network/***.swift'
结束
它不能像我希望的那样工作,因为CocoaPods只是将所有文件合并到一个框架中(只是将其划分为单独的文件夹),所以:
服务中导入网络时出现致命错误,因为pod安装后没有网络
目标。因此,我不能将该框架与Swift Package Manager一起使用。CocoaPods只是将所有内容合并到一个目标MyFramework
,正如我前面提到的
这是一个解决方案,但很难维护多个独立的git存储库,也很难进行单独的提交和推送。我想把所有东西都保存在一个回购中。我很确定CocoaPods没有能力为一个podspec创建单独的目标 如上所述,您可以创建单独的podspec,但可以在一个存储库中创建,如。然后,在开发过程中,您可以使用一些示例项目,其中包括所有的podspec。您不需要管理不同的存储库 此外,您还可以尝试使用不同的模块创建模块映射,例如:
framework module Something {
framework module Core { ... }
framework module Toolbox { ... }
...
}
然后在podspec中指定,例如:
Pod::Spec.new do |s|
s.module_map = "#{s.name}/#{s.name}.modulemap"
...
但我不确定。我只尝试了第一种方法,如在
RxSwift
存储库中。在pod文件中使用以下方法,为每个目标指定不同的pod。
您还可以创建多个def
,并在每个pod中添加可以单独使用的不同pod
在所提供的示例中,我有2个共享吊舱和2个目标
是一个目标的名称target1\u name
是另一个目标的名称target2\u name
pods列表shared_pods
其他pods的列表shared_pods_2
use_frameworks! def shared_pods # Comment the next line if you're not using Swift and don't want to use dynamic frameworks pod 'RealmSwift' pod 'Alamofire' pod 'ReachabilitySwift' pod 'SDWebImage' end def shared_pods_2 pod 'Fabric' pod 'Crashlytics' pod 'CryptoSwift' end target 'target1_name' do shared_pods end target 'target2_name' do shared_pods_2 end