ios - 设置一个carthage/cocoapod项目来分发多个依赖

标签 ios swift cocoapods carthage

抱歉,如果这些问题很基础/愚蠢。过去我不需要做任何框架设置的事情。我过去只是为项目做出了贡献。我想使用 Cocoapods 和 Carthage 分发 SDK 的不同部分。例如,

github "MyOrg/Core" -> Has interfaces I want to use in SmallerModule.
github "MyOrg/SmallerModule" -> Has third party dependencies I do not own

是否有关于如何设置的一般规则?我的核心项目将具有 SmallerModule 需要访问的接口(interface)。 SmallerModule 应该是 Core 项目的一部分还是应该是单独的 Xcode 项目?

其次,如果是一个单独的项目,SmallerModule是如何访问到Core中的接口(interface)的?我需要将它作为依赖项包含在 SmallerModule 中吗?如果是这样,如果有人试图同时引入 Core 和 SmallerModule,Core 是否会被复制,因为 Core 是 SmallerModule 的依赖项?

最佳答案

Should SmallerModule be a part of the Core project or should they be separate Xcode projects

我想这取决于您需要公开的内容的粒度。 SmallerModule可能在 Core 内分离或合并,请记住,一旦公开它,返回它就非常复杂,例如:您可能会生成对其他项目的依赖关系。

Secondly, if it is a separate project, how does SmallerModule have access to the interfaces in Core?

如果拆分项目,SmallerModule将轻松访问 Core 的接口(interface)动态框架,首先要做的就是生成这样的框架。

Do I need to include it as a dependency in SmallerModule

例如:如果您使用 Carthage作为依赖项管理器,您应该创建一个 Cartfile项目内部SmallerModule包含这一行:

github "MyOrg/Core"

然后 SmallerModule “Build Phases”设置选项卡,点击“+”图标,选择“New Run Script Phase”,在shell下方的脚本区添加如下内容:

/usr/local/bin/carthage copy-frameworks

在“输入文件”下添加您要使用的框架的路径,例如:

$(SRCROOT)/Carthage/Build/iOS/Core.framework

将复制框架的路径添加到“输出文件”,例如:

$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Core.framework

然后在解决依赖之后:

carthage update

你会发现Core.framework在文件夹内 ./Carthage/build/iOS/所以你可以将这样的框架拖放到你的 SmallerModule 中能够编译它。

wouldn't Core be duplicated if someone tried to pull in both Core and SmallerModule since Core is a dependency for SmallerModule

因为您将使用依赖管理器(例如:Carthage),所以这不是问题。在解析过程 ( tag x.y.z ) 中,依赖管理器本身将解析所有依赖项(如果它们链接相同的版本,例如: carthage update )。

请注意,如果 SuperSmallerModule必须绑定(bind)你的 SmallerModule ,然后假设一切正常,必须创建一个 Cartfile与:

github "MyOrg/SmallerModule"

并遵循相同的过程,也解释了here .

关于ios - 设置一个carthage/cocoapod项目来分发多个依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48216056/

相关文章:

ios - xcode cocoapods 库未找到错误

ios - 使用核心数据的不同 id 列的总和

ios - 用动画剪出形状

ios - 获取 NSInvalidArgumentException',原因 : 'Cannot create an NSPersistentStoreCoordinator with a nil model'

ios - UIButton 快速更改不同状态下的边框颜色

iOS Cocoapods 问题 : No such module in parts of my project (custom folder & Apple Watch target)

ios - Cocoa Pods 需要完全重新安装

ios - 带有 CAShapeLayer 和 CABasicAnimation 的循环进度条

ios - RLM 结果 :allObjects crash (iOS Objective-C)

ios - 是否可以在表情符号字符上查询 Firebase?