Tag: 迦太基

使用CocoaPods和Carthage分发封闭源框架

每个开发人员都会不时地努力工作。 为了实现我们想要的功能,我们从博客,书籍,Github页面(源代码,要点,问题–顺便阅读Github问题可能会非常有帮助)中进行阅读,堆栈溢出线程等。我们从上述所有来源中收集很少的信息并收集它们寻找解决方案。 对于我们大多数人来说,在解决了我们的问题之后,我们就解决了。 但是,如果我们忘记了,或者我们不准备再做一次该怎么办? 写下我们在此过程中遇到的挑战是一个好习惯,但是我们当中有多少人呢? 大多数时候,我们选择we懒的方式。 我会记住它,或者会再次找到相关的东西。 这次,我将改变态度,并写出在与CocoaPods和Carthage一起作为封闭源项目分发我们的框架时遇到的挑战。 我希望这篇文章可以帮助某人节省时间并保持神经😄 让我们从列出我们正在做的事情开始: 我们正在构建一个简单的框架(本例中为付款结帐服务)。 现在,我们自己完成所有工作,这意味着我们的框架没有内部依赖性。 (好吧,如果您嵌套了依赖项,那么本文将不再涉及它们,因此,您将学到更多内容,但是请相信我,它们并不难。) 框架使用Objective-C编写,以支持两种语言。 尽管我们是Swift的粉丝,但出于某些考虑,我们还是选择了Obj-C。 (如果您拥有Swift框架,则可以像本文中一样应用所有内容,因此不用担心👊🏻) 我们希望将代码作为封闭源分发。 因此,我们将分发通用二进制文件(.framework文件)。 通用意味着该宝贝将在物理设备和模拟器的所有体系结构上工作。 我们正在使用Github作为我们框架的宿主。 我听说在进行聊天之前已经足够了,在我们开始之前,我假设您都已经在Mac上安装了CocoaPods和Carthage并熟悉它们和一些终端命令(实际上,我确定,因为您要分发您的框架以及一些依赖项管理器😄)。 迦太基 https://github.com/Carthage/Carthage/pull/1760,直到出现该拉取请求,您才能将框架发布为封闭源。 它相对较新,因为它已于今年2月14日❤️推送回购。 (编码code真是糟糕的一天) 迦太基手册将这一过程命名为将预先构建的框架归档到一个zip文件中 ,该文件缺少有关如何读取日志的信息,等等。我们现在将进行遍历。 如果Carthage附加到项目存储库上的GitHub Release或通过二进制项目定义文件,它们可以自动使用预构建的框架,而不是从头开始构建。 要为特定标签提供预构建的框架,应将所有受支持平台的二进制文件一起压缩到一个存档中,并且该存档应附加到与该标签相对应的已发布发行版中。 附件名称中应包含.framework (例如ReactiveCocoa.framework.zip ),以向Carthage指示其包含二进制文件。 您可以使用carthage archive命令执行上述归档操作,如下所示: 迦太基建造-无漏电流 迦太基档案YourFrameworkName 开始之前,请在Xcode上打开框架项目,然后通过Command + Option + Shift + K干净地构建项目。 (清洁文件夹会在大多数情况下将您从恶魔中拯救出来) 打开一个终端并导航到您的项目文件夹。 carthage build –no-skip-current到终端。 (首先,我将显示失败的构建和处理方法。然后,我们将继续)

名为“ Objective-C和带有CocoaPods的Swift”的沼泽

名为“ Objective-C和带有CocoaPods的Swift”的沼泽 我最近得到一份合同,内容是客户的应用程序完全由Objective-C编写。 好吧……您知道这个故事……许多应用程序由于缺少Swift的游戏规则改变程序“ Optional ”而崩溃,而且我个人不喜欢Swift中的故事板交互 我决定将这场噩梦变成一个仙境:)…。 不幸的是,该项目已经基于CocoaPods了。首先,由于项目的独立性,我试图将其更改为“ Carthage”,它比Cocoa Pod更好。 我通过“ cocoapods-deintegrate”摆脱了CocoaPods的困扰,它是救生员插件(那里的工作很好的人)……它确实需要简单的步骤…… 然后我在项目上遍历了podfile来找出那里的依赖关系,结果如下: 好吧……大多数真正古老的库都不知道为什么它们仍在呼吸……还有故事的来龙去脉,您可以自己开发该功能,而无需在那里使用任何库…… 有趣的生活开始了,其中一些库没有迦太基版本,我不得不自己将其转换为“迦太基”以及以下剧集..: “迦太基将只构建从您的.xcodeproj共享的Xcode方案。 您可以通过运行carthage build –no-skip-current ,然后检查Carthage / Build文件夹,查看是否所有预期的方案都能成功构建。” 我已经将ACSPinKit和iOS-Slide-Menu更新为“迦太基”,但是紧迫的时间来了,你知道这意味着什么,当你是承包商时…你应该比他们的专职开发人员快得多:) 我决定回到可可豆荚,然后添加我的快速库,没有它们我无法呼吸 然后安装pod …这些术语遇到了“动态框架”,看起来像CocoaPods从“ CocoaPods 0.36 ”中得到支持,这看起来像是个好消息……。我将其添加到podFile的顶部 它开始安装Pod,但是依赖项(FMDB)之一困扰了我的构建。 FMDB是一个有用的库,可以处理应用程序上的SqlLite db,它是用Objective-C编写的,我已经在我的桥接文件“ *****-Bridging-Header.h”中添加了我需要调用的其他文件他们从敏捷的一面: 在这一点上,我真的放弃了,不知道为什么在我的xcode构建阶段中不加入FMDB库。 然后开始运行带有构建设置文件和无步搜索的游戏…。它把我拖到一边说好,我将在Objective C中完成其余的应用程序,但是Swift和RxSwift的悲伤表情促使我继续工作这个问题…。 猜猜是什么……光亮了……我对自己说,为什么不遵循迦太基遵循的概念……手动复制文件……但是我没有完全从FMDB复制所有文件,但是文件并不多……。 我已经从FMDB中跟踪了所有需要的文件,并将其复制到了我的Swift文件夹中 然后运行构建以及交叉手指….. 你知道然后休息,像传奇一样去散步:) 无论如何,希望这对那些必须走同样的路并且拥有一个与Objective C和Swift结合使用的应用程序的人有所帮助。

使用CookieCutter Swift创建iOS框架

在iOS中创建框架对我来说并不是什么新鲜事物。 在我的整个职业生涯中,我有机会建立了其中的几个。 您想要创建框架的原因有很多: 创建可以在项目之间重复使用的抽象。 与社区分享您建立的东西。 将项目拆分为模块。 … 直到今天,每当我不得不创建一个iOS框架时,我都会发现自己重复了相同的模板: pod lib创建* 是的 那是赢的正确的cocoapods! 几天前,我收到了有关CookieCutter Swift的朋友建议。 用于创建iOS框架的模板,该模板不仅允许我的项目支持Cocoapods,而且还支持Carthage和Swift Package Manager。 在本文中,我将展示如何使用CookieCutter创建iOS框架以及这样做的好处。 我将在本文中创建的框架可以在这里找到。 检查它是自述文件。 几乎所有内容都来自CookieCutter模板,太棒了! 从头开始真正的生产自述文件,太棒了! thiagolioy / Swifixture Swifixture –用于加载Json文件并帮助进行更好测试的Swift库。 github.com 聊够了..给我看看代码! 首先,请确保每个人都在同一页面上,这意味着: 酿造安装迦太基 酿造安装cookiecutter cookiecutter https://github.com/cookiecutter-swift/FrameworkTemplate *对于将来的运行,您可以将命令缩短为cookiecutter FrameworkTemplate 。 但是,如果要使用最新的模板,则仍应运行上面的完整命令。 运行命令后,您将得到如下所示的文件夹结构: 有很多文件夹和文件: 购物车文件 Podspec PackageSwift 自述文件 Xcode项目 源/和测试/目录 除其他事项外 .. 很棒的事情是,如果您像我一样来自“ pod lib create”世界,能够使用Carthage导入Nimble和Quick是一个很大的增强,而不是测试中更多的语法和完成问题! 使用子规范配置podspec的方式也值得一提。 这种方法将使很多豆荚受益匪浅。 许多图书馆都做到了卓越,例如Moya。 […]

如何使用迦太基安装框架。

我将向您展示如何安装Carthage并为您的项目加载框架,为简单起见,我将以AlamoFire为例。 1.安装迦太基 按照此链接https://github.com/Carthage/Carthage/releases可以像安装其他任何应用程序一样安装pkg文件。 2.完成了吗? 创建一个Cartfile。 我们要安装Alamofire,因此在空白文本文件中编写github “Alamofire/Alamofire” ~> 4.4 ,并将其保存为名称“ Cartfile”,我使用Atom创建此文件。 把它放在你的仓库中。 3.在终端中运行“迦太基更新” 导航到包含cartfile的仓库。 运行“迦太基更新” 等到下载完成。 下载完成后,您将拥有在项目中使用Alamofire的所有必需文件。 4.将必要的文件拖放到您的项目中。 您正在构建一个iOS项目,因此只需要iOS框架。 将框架文件拖放到项目中的嵌入式二进制文件中。 5.你完成了🤙 结论: Carthage是一个简单的依赖项管理器解决方案,它迫使您稍微浏览一下下载文件并找到所需的文件,但是从长远来看,它更简单,因为您不需要在单独的xcworkspace文件中工作,您可以拖动并如果要添加更多框架,请删除新框架。 设置它,然后忘记它。 如果您不喜欢cocoapods,或者对它有不好的经验。 结帐迦太基!

椰子足与迦太基

很多时候,我们想知道如何管理对我们iOS项目的依赖。 从历史上看,这非常简单,因为选项非常有限。 从历史上看,我们使用Cocoapods是诚实的唯一有意义的选择,因为您既不想自己也不使用git子模块来管理它们。 过去的依赖管理 随着时间的流逝,我们意识到有新的选项可以管理依赖项。 当迦太基第一次出现时,我们也给了它一个机会,但它仍处于早期开发阶段,因此它具有很多令人讨厌的缺点。 不可能只为一个平台建立依赖关系,更新一个依赖关系而不更新其他依赖关系是不可能的,添加一个依赖关系而不编译其他依赖关系也是不可能的。 这样的事情只会让我们放慢脚步,因此我们决定坚持使用Cocoapods。 我们也不喜欢迦太基的哲学,因为我们喜欢运行pod install而不处理其他任何东西的想法。 迅速并发症 自从我们开始使用Swift作为主要的编程语言以来,我们面临着越来越多的麻烦-编译时间增加,语法高亮和SourceKit崩溃频繁。 我们开始想知道如何使我们的开发人员的生活更加愉快。 我们的第一个想法是看一下我们的依赖关系,因为它们是不变的代码,不需要被Xcode一次又一次地索引和编译。 这就是Carthage展示其优势的地方-依赖关系仅在框架中构建一次,仅此而已,不再需要建立索引,也无需进行编译。 迦太基反击 我们进行了一次尝试,Carthage似乎解决了所有早期开发阶段的问题,因此我们仅使用platform选项为iOS构建,而使用cache-builds选项跳过了已在本地编译的框架的编译。 结果真的很酷-语法突出显示变得更加可靠,并且构建时间减少了百分之几十。 这意味着,即使在功能不强的设备上,iOS开发也比15英寸Macbook Pro更舒适。 这也意味着我们决定以迦太基作为主要的依赖项管理器开始新项目。 我说主要的,尽管仍有一些不支持它的图书馆。 这些可能是较旧的存储库,它们不再维护或对我们无关紧要,因为我们尝试仅使用维护的库。 但是,某些专有软件使用静态库,这意味着它不能由迦太基管理。 在那些情况下,我们仍然使用Cocoapods。 持续的不便 但是,我们仍然遇到一些问题。 依赖项的初始编译时间可能会非常长,尤其是当依赖项包含多个子规范时(在Cocoapods术语中),因为Carthage会编译它们的全部(及其所有依赖项),即使项目不需要它们也是如此(为此存在拉动)迦太基github上的请求,这将减少这种不便,但目前仍未合并)。 我们也希望在项目之间进行一些本地缓存。 在我们的机器上,我们有更多的项目使用Carthage,并且经常使用相同版本的依赖项。 如果我们在每个项目中都运行迦太基引导程序 ,则即使它们的依赖关系可能是由以前的项目构建的,也可以建立依赖关系,这可以节省大量的构建时间。 也许与团队远程共享构建工件也很好。 由于我们的许多项目都使用Realm数据库,因此Carthage的空间利用率也可能更高一些-其工件占用大约1 GB的磁盘空间。 如果您有更多项目,则会很快损失很多空间。 仍然不是最好的 迦太基虽然极大地加快了我们的发展速度,但是仍然存在一些需要解决的问题。 也许现在可以通过使用正确的参数集来解决其中的一些问题,而另一些可以通过使用正确的工具(如Rome)来解决,但是那些提到的缺点可以很好地在迦太基内部集中解决。 分享是关怀 我们认为#sharing很重要,因此我们很乐意听到您如何管理依赖项。 您可以在下面给我们留下评论,或者在我们的Twitter,Github或Facebook上ping我们。

迦太基与可可足-建立时间分析用例

在开发iOS项目时,您可能会面临的最著名的难题之一就是您应该使用哪个程序包管理器:Cocoapods或Carthage。 当然,没有正确的答案。 两种方法都是可能的,并且它们都有消极点和积极点。 但是在这篇文章中,我想谈谈我在大力神开发过程中对他们俩的经历,以及为什么我们选择从可可足类转变为迦太基。 在项目开始时,选择“迦太基”或“ Cocoapods”可能与我们讨论“构建时间”无关,因为使用的框架数量可能很少。 当您的项目开始增长并向其中添加更多框架时,构建时间就成为一个问题,因为在较长的构建时间中开始浪费大量的开发时间。 在Hercules开发期间,我们意识到在项目中执行干净命令后,在构建过程中损失了大约15分钟,而在执行存档时损失了大约20分钟。 此时,我们使用了17个框架(其中一些框架与Realm,Firebase,Facebook SDK和Google SDK相当),而Cocoapods作为我们的软件包管理器。 我们的构建时间简直太糟糕了,我们不得不为此做些事情。 到那时,我们已经使用了整个冲刺来分析和检验假设,以改善这种浪费的时间。 我们从分析构建时间开始,寻找哪些关键点花费太长时间来编译。 尽管我们的项目很大(+230个源文件),但我们意识到编译源文件所花的时间并不是问题。 在每次“清理和存档”期间发生的事情是,花费大量时间来编译所有框架源文件。 之所以发生这种情况,是因为Cocoapods在每次构建过程中都将框架源文件作为项目的一部分进行附加。 这意味着,即使您从未接触过这些文件,每次执行“清理”操作也会清除所有框架源文件。 您多久修改一次外部框架文件? 您可能会同意我的看法,几乎永远不会同意。 从那时起,我们决定从Cocoapods转到Carthage,成为我们独特的包裹管理器。 我将从使用迦太基的缺点之一开始。 当我们开始切换所有框架时,我们意识到其中的一些框架不支持Carthage-Google SDK,Firebase框架,Facebook pop和Fabric Analytics。 这意味着我们必须手动导入所有这些框架。 尽管这样做不是很大的问题,但这是我们在Cocoapods中所没有的额外工作。 另外,某些框架手动安装(例如Facebook pop)必须通过将框架PBX添加为主PBX的子项目来完成,这与通过Cocoapods添加它的行为类似,因为框架源文件将在每次构建时进行编译。 手动导入所有必要的框架后不久,我们遇到了迦太基的第二个负面问题:第一次carthage update 。 使用no-use–binaries标志在本地编译所有框架大约需要1个小时,这迫使所有框架都在本地编译。 尽管在执行了所有这些烦人的更改之后,我们还是开始收集使用迦太基的好处:清洁后2分钟的构建时间。 编译Facebook pop框架花了大约20秒钟,该框架必须作为子XCode项目导入,其余时间则编译我们自己的源文件。 从那时起,我们意识到由于Cocoapods自动对我们进行手工操作,从Cocoapods切换到Carthage最初很烦人,但是由于Build Time的减少,它为我们节省了巨大的开发时间。 同样,执行“存档”将与“清理”后编译代码的速度一样快,这意味着如果您频繁执行手动发布,迦太基将节省您的时间。 摘要 椰子足 尽管Cocoapods是更成熟的工具,具有更多的框架,并且超级易用,但它可能使您头疼,无法执行干净的构建并不得不等待所有框架的源文件进行编译。 另外,Cocoapods是集中式解决方案,因此请准备好开始失去对PBX / Workspace文件的控制,因为从现在开始,Cocoapods将开始控制并在某些您可能不会注意到的地方进行一些更改。 迦太基 到目前为止,我们注意到的两个负面问题是,如果您决定使用本地编译,则需要花费大量时间来编译所有框架,并且有必要手动导入一些框架。 虽然,我们在使用迦太基时节省的构建时间使初始负数变小了。 杂种 即使我之前没有提到,您也可以使用混合解决方案:Cocoapods和Carthage一起使用。 但是我认为后果很直观:您将从这两种工具中继承正负两点。 这就是我和我的团队同时使用两个程序包管理器的经验。 希望本文可以为您提供任何帮助,以便您更好地选择一个。 感谢您的阅读,并考虑在below下面留下评论/反馈

如何使用Carthage将外部框架集成到iOS项目?

Carthage是适用于macOS和iOS的简单依赖项管理器。 您可能会认为它是Cocoapods的替代工具。 使用迦太基的一些优点 迦太基不会修改您的Xcode项目 迦太基获取并构建项目以创建框架。 您可以完全控制所使用的框架。 没有中央机构来强制图书馆作者提交其代码(或吊舱)。 Github上的任何框架项目都可以通过Carthage作为依赖项下载。 迦太基可以通过使用动态框架来共享Swift代码,Objective-C代码和图像之类的资产。 (注意:iOS 8或更高版本支持动态框架) 如何安装? 您可以从https://github.com/Carthage/Carthage/releases下载Carthage.pkg 我更喜欢使用Homebrew。 安装完Homebrew之后。 打开您的终端运行brew update并brew install carthage 。 准备好定义项目依赖项。 获取框架 1-在您的项目文件夹中创建一个Cartfile 2-在Xcode或您喜欢的文本编辑器上打开Cartfile并添加依赖项。 我只集成了一个依赖项,但是您可以在此文件中列出所有依赖项。 现在保存并关闭您的Cartfile。 3-返回终端并通过以下方式导航到项目的主目录 cd ~/Path/To/Your/Project 4-使用此carthage update –platform iOS命令建立依赖关系 由于使用–platform iOS选项,因此您在命令框架中输入的内容仅适用于iOS Cartfile.resolved包含下载的Carthage依赖项的版本。 Carthage/Checkouts包含每个依存关系的源代码。 Carthage/Build包含要集成到项目中的构建框架。 这些框架有时是从Github发布页面下载的,有时是通过使用Checkouts文件夹中的源代码从头开始构建的。 (您可以在Build文件夹中有框架,而Checkouts文件夹中没有代码,这意味着框架是从Github下载的) 整合框架 您需要链接创建的二进制文件并创建运行脚本,然后项目就可以运行了。 逐步框架集成 1-返回Xcode,然后在项目导航器中单击项目。 2-选择项目目标 3-选择构建阶段 4-将您的libraryName.framework文件添加到“使用库链接二进制文件”部分(您可以从Finder拖放) 5-创建运行脚本 在应用程序目标的“构建阶段”设置选项卡上,单击“ +”图标,然后选择“新建运行脚本阶段”。 创建一个运行脚本,在其中指定外壳程序,然后将以下内容添加到外壳程序下方的脚本区域: /usr/local/bin/carthage copy-frameworks 该脚本解决了通用二进制文件触发的App Store提交错误,并确保归档时复制了与位码相关的必需文件和dSYM。 […]

缓存迦太基以加速iOS持续集成

几乎没有任何iOS项目没有任何依赖关系。 几乎每个项目都必须管理内部或第三方的某种依赖性。 每种主要的编程语言都有自己的依赖性管理系统。 Swift具有多种选项来管理依赖项。 苹果很久以来一直在开发自己的Swift Package Manager。 认真地讲,很久以来,iOS开发人员都渴望获得Apple支持的官方依赖项管理器,但事情似乎以乌龟的速度发展着。 Swift Package Manager仍然不支持iOS项目。 CocoaPods是iOS项目中最常用和最传统的依赖管理,因为开发人员没有其他选择。 CocoaPods是一种神奇的,不可思议的,超能力的魔咒,它使您的Xcode项目无法正常工作。 它建立依赖关系,创建工作区,执行一些脚本和其他东西。 CocoaPods运行良好,但是很少有开发人员了解运行pod install命令时发生的实际情况。 如果一切正常,每个人都会感到高兴,但是当pod安装失败时,每个人都会感到恐慌。 没有人知道如何解决该问题,需要花费数小时,数天或数周的时间才能解决由CocoaPods造成的混乱。 爱它还是恨它,无论哪种方式,您都必须使用它。 迦太基的诞生 Somone了解了iOS开发人员对CoacoPods的痛苦,并制作了一个名为Carthage的婴儿作为CocoaPods的替代品。 Carthage仅适用于动态框架,并且使开发人员能够完全控制他们对Xcode项目所做的工作。 它只是构建框架,开发人员必须手动将那些框架链接到目标的各个构建阶段。 迦太基运作良好,但缺点不多 迦太基仅适用于动态框架 迦太基的开发者社区很小,为该项目做出了贡献 使用迦太基时涉及的手动步骤很少 主要缺点是,它是如此缓慢,特别是在CI服务器上。 迦太基检出和构建每个构建的每个框架。 对于CI而言,这绝对不是一个很好的方法,因为构建速度将非常缓慢且冗长。 如果没有任何更改,则没有干净的解决方案来缓存Carthage /目录。 在这篇文章中,我们将看到如何在CI服务器上缓存Carthage目录并加快构建速度。 CI上的迦太基 迦太基最常见的用法是运行迦太基更新或脚本作为CI脚本的一部分,该脚本会修改所有依赖项以使用最新版本的Cartfile.lock文件更改,该更改不正确,并导致签出和构建所有依赖项。 这将使CI的构建速度非常慢。 因此在CI上使用迦太基的理想方法是 检查Cartfile.lock是否存在。 如果该文件不存在,那么我们必须使用Carthage bootstrap引导所有依赖项。 如果Cartfile.lock存在但未更改,则无需执行引导程序或更新操作,并且可以使用先前版本中Carthage目录中的内容。 如果存在Cartfile.lock并更改了某些依赖关系,则我们仅需引导那些过时的依赖关系,而不是全部。 现在,我们知道了如何使用Cartfile.lock状态执行引导或跳过引导的机制。 下一步将是编写一个脚本来做到这一点。 根据CI服务器提供的环境变量,我们可以通过多种方式实现这一目标。 Jenkins使用的脚本如下所示 [-f Cartfile.resolved]; 然后 CARTFILE_CHANGED =`git diff –stat $(GIT_PREVIOUS_SUCCESSFUL_COMMIT)$(GIT_COMMIT)| grep’\ […]

依赖管理器:在Cocoapods和Carthage之间切换

最初 由 Andres 于2018年7月30日 发布在 可缩放路径 上。 如今,编写所有自己的代码的开发人员很少,而且有充分的理由。 当您找到写得很好,受良好支持的第三方库来帮助更快地构建产品时,为什么还要重新发明轮子呢? 实际上,我们只是写了一篇文章,描述了我们自己的评估第三方库的过程。 在您的项目中插入其他人的代码确实会引发一些问题,包括需要有效管理所有这些不同的库。 依赖管理器通常扮演的角色。 依赖项管理器只是一个工具,可以帮助您将外部库集成到项目中。 通常,它们包括一个列出哪些库和版本可用以及如何获取它们的列表。 一旦依赖性管理器了解了所有这些信息,它将负责获取正确的版本并将其集成到您的项目中(或让库准备在以后由您集成)。 在本文中,我将重点介绍在Apple环境中使用的依赖项管理器:Carthage,CocoaPods和Swift Package Manager。 这篇文章不是依赖管理器的初学者指南,而是交叉引用,因此开发人员可以轻松地学习在CocoaPods和Carthage之间进行切换。 例如,假设您与CocoaPods进行了广泛的合作,但是突然发现自己参与了一个使用Carthage的新项目。 您不需要学习什么是迦太基-您只需要学习如何执行以前在Cocoapods中但在Carthage上执行过的动作。 本文将促进这种日益普遍的过渡。 我还概述了较新的Swift Package Manager的介绍,以突出其当前的用例和弱点。 CocoaPods于2011年推出,是Cocoa和Cocoa Touch环境的第一个依赖项管理器。 由于它是用Ruby编写的,因此必须作为Gem分发。 因此,您将需要CocoaPods的Ruby语言的兼容版本。 在撰写本文时,cocoapods-core gem需要Ruby 2.0.0或更高版本(macOS 10.13.3随Ruby 2.3.3一起提供,因此这不应该成为问题)。 CocoaPods具有集中式方法。 这意味着CocoaPods具有一个存储库(位于Github上),该存储库将Pod的名称(库在CocoaPods上接收到的名称)映射到Pod的下载位置。 采用集中化方法的优点是您拥有一个可以在CocoaPods上存储所有可用库的元数据的地方。 反过来,这提供了一种搜索库的简单方法。 缺点是,如果该存储库发生故障,您将无法解决您的依赖项。 在迦太基中,当您运行carthage update ,程序将检查依赖关系,将其构建并保留,以供您抓取并将其集成到项目中。 CocoaPods不同,当您运行pod install ,它将下载库并创建一个新的.xcworkspace。 生成的.xcworkspace将在其中包含两个项目:您刚刚创建的项目和另一个称为“ pods”的项目。 从现在开始,您将必须使用此工作区来开发应用程序。 您可以查看下面的屏幕截图,以更清楚地了解这一点。 编译项目时,依赖项也会被编译。 CocoaPods仅通过运行pod install即可配置所有内容。 真好! 为了表明您要在项目中使用哪些库,您需要将它们添加到Podfile中。 这是一个ruby文件,您可以在其中指定要安装的Pod,版本和目标。 […]

如何与迦太基共享框架

迦太基是可可应用程序的另一个依赖项管理器。 与Cocoapods不同,Carthage仅使用xcodebuild工具下载并构建依赖项,而无需修改当前项目文件或当前Xcode构建设置,此外,Carthage是非中心工具,可以减少维护工作并避免任何中心故障。 让您的框架支持Carthage是一个好主意,让我们开始吧。 首先,选择目标→构建设置→确保您的产品名称和产品模块名称与框架名称相同。 其次,选择您的目标Click Manager方案→确保在项目中选中了共享复选框。 第三,打开终端CD到您的framework文件夹,检查路径是否正确并构建carthage,如果没有任何错误,您可以像通常一样通过Carthage安装框架。 $迦太基构建-不跳过当前 您可能想知道如何与Cocoapods共享框架: https://medium.com/codebbkaf/lets-sharing-framework-with-cocoapods-e15d18b18967