有感于

by admin on 2019年1月17日

说起 iOS 开发的包管理,我们就不由得会想起 CocoaPods,
它确实是一个有力的工具。但本次咱们来关注另外一个包管理工具
Carthage,要是说 CocoaPods 像一个航母,一应俱全,坚实稳固。那么 Carthage
就像一艘巡洋舰,机动灵活,攻击快捷。

 
自微信普及以来,我们很幸运,可以由此微信学习群学习最新最前沿的文学知识,它们出自于海外,来自于国内一流医院的首长,助教,专家们。

Carthage 和 CoaoaPods 的区别

CoaoaPods 是一套完整缓解方案,大家在 Podfile
中指定好我们需要的第三方库。然后 CocoaPods
就会展开下载,集成,然后修改或者创立大家项目标 workspace
文件,这一层层完整操作。

相相比较之下,Carthage 就要轻量很多,它也会一个叫做 Cartfile
描述文件,但 Carthage 不会对大家的门类布局举办任何改动,更不多创立
workspace。它只是基于我们描述文件中安排的第三方库,将他们下载到本地,然后利用
xcodebuild 构建成 framework
文件。然后由大家友好将这么些库集成到品种中。Carthage
使用的是一种非侵入性的哲学。

所谓非侵入性艺术学,其实可以这样掌握。我想利用过 CocoaPods
的校友们,可能都会经历过如此一种体验,尤其是在最开头使用它的时候 –
大家仔细在 Podfile 中配置好我们所需的第三方库,并且遵照 CocoaPods
的指定步骤,输入指令,然后等待那多少个第三方库乖乖的并轨到项目中。但总有那么几遍,会大失所望,比如运行完
pod update 命令,看似一切顺利,workspace
也不负众望的翻新了。但当大家实在编译构建项目标时候,某些莫名其妙的失实出现了,类似于这种:

diff: /../Podfile.lock: No such file or directory
diff: /Manifest.lock: No such file or directory

中国哲学,欣逢这种题材后,大家只可以通过一层层的搜索,然后解决那多少个题材。本来我们使用包管理,就是为了集成第三方库的时候更加有利,快捷。结果处理这个包管理的谬误却又浪费了我们有的是岁月。

假使使用 Carthage 大家就不必让那一个问题困扰了,因为 Carthage
本身不会对我们的项目结构举行其他变动,类似 CocoaPods
暴发的这多少个附加问题,就不会生出了。

但是 Carthage 就没有 CocoaPods 的并轨操作能力了,作为开发者,必须在
Carthage 将第三方库构建完成后,手动的关系到花色中。

另外 Carthage 除了非侵入性,它还是去中央化的,它的包管理不像
CocoaPods
那样,有一个主干服务器(cocoapods.org),来管理各类包的元信息,而是借助于每个第三方库自己的源地址,比如
Github。这样也是有利有弊,好处就是大家对包管理不再依靠中央服务器,不会受中央服务器信息量和安乐的限制(尤其是在我们这里的网络访问情状问题),弊端嘛,就是我们想寻找第三方库的时候,也绝非一个为主服务器来提携大家举办索引,而是必须从网络上机关检索。

二种艺术学,暴发了五个产品 CarthageCocoaPods
各有上下,咋样选拔,就要看各位自己的急需了。

 
这样的读书与培训,对于每一位医务工作者,尤其是县级,或者县级以下的乡镇医院每一位大夫,都是非凡珍爱的学习机会。

开班采纳 Carthage

Carthage 的主干气象介绍完了,接下去咱就来看一下咋样使用 Carthage
来展开包管理吗。

率先大家需要设置 Carthage 环境,可以在它的 Github
主页上,找到下载地址:https://github.com/Carthage/Carthage/releases:

Carthage 近来风行版本是 0.9.3,下载 Carthage.pkg
包就可以,下载成功后,双击安装。

安装成功后,我们就足以在档次中布置 Cartfile
文件了,可以在我们项目的根目录中,使用任何一个你熟谙的文件编辑器,建立这个文件:

$ vim Cartfile

Cartfile 文件中,引入一个第三方库,比如 SwiftyJSON

github "SwiftyJSON/SwiftyJSON"

下一场大家保留文件,回到命令行界面,再度输入指令:

$ carthage update

紧接着,Carthage 就会初步抓取并运用 xcodebuild 构建第三方库:

*** Cloning SwiftyJSON
*** Checking out SwiftyJSON at "2.3.0"
*** xcodebuild output can be found in /var/folders/08/sys7159s6zjfd52t3p35qrbc0000gq/T/carthage-xcodebuild.yqDOKU.log
*** Building scheme "SwiftyJSON OSX" in SwiftyJSON.xcworkspace
*** Building scheme "SwiftyJSON iOS" in SwiftyJSON.xcworkspace
*** Building scheme "SwiftyJSON watchOS" in SwiftyJSON.xcworkspace

update 操作完成后,会在类型的根目录中生成一个 Carthage
目录。这个目录中又富含了多个目录 BuildCheckout

Build 中存放的是构建好的 framework 包:

Checkouts 中存放的是签出的第三方库项目源文件:

接下去,大家回来项目设置,进入 General 选项卡,在最下方的 Linked
Frameworks and Libraries
中,将 Carthage/Build/iOS 中的
framework 文件添加到项目中:

然后在 Build Phrases 中,点击左上角的 + 号,添加一个 New Run
Script Phrase
:

然后在脚本区域输入:

/usr/local/bin/carthage copy-frameworks

最后将 SwiftyJSON 的门径添加到 Input Files 中。

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

最后结果如下:

累加这一个 Run Script 的机能是为了让运行时可以找到这多少个动态库。这一点
Carthage 官方文档中并未太明了的印证。我其实的试验过,倘诺不添加这么些
copy-frameworks
脚本,那么项目在运作的时候会因为找不到这么些动态库而在开行的时候崩溃。

还是能将 Carthage
所集成的第三方库生成的标志文件添加到项目中,这样大家在调节的时候,就足以步入第三方库内部的代码啦。

具体步骤,仍然进入 Build Phrases ,然后在右上角点击 New Copy Files
Phrase
,然后将 Carthage/Build/iOS 目录中的
SwiftyJSON.framework.dSYM 符号文件拖动进来:

如此,大家项目运行后,就足以在断点中步入 SwiftyJSON 内部的代码啦。

至于这多少个标记文件,还有少数豪门要留意的,就算你利用的是 Xcode 7
以上的本子,有可能在进入了符号文件后,造成编译出错。那么可能是因为一个构建选项引起的。

这时,可以在 Build Settings 中,找到 Strip Debug Symbol During
Copy
那一个选项,确保这些选项的值设置为 NO

接下来再重复编译,一般就可以正常通过了。这些编译选项是指定在 Copy
符号文件的时候是不是对符号表举办拍卖,在新版的 Xcode 上这么些选项默认是
YES 的,所以我们需要把它设置为
NO。这些问题也是官方文档中没有关联的,我在调节的时候,碰着过这么些题目,经过一番物色才找到原因,困扰了自身好半天~

好啊,经过一番磨难,我们因此 CarthageSwiftyJSON
库顺利的集成到品种中啦。

水平有限,这里也只是对 Carthage
举办了起头的牵线。希望借助那多少个作品,与我们举行一个交流分享,希望可以作为抛砖引玉,相信屏幕前的你富有更多的聪明才智,也欢迎大家一齐商讨自己更透彻研商的经验。

我们的微信公众号上边还有关于包管理更多的议论,如若我们意犹未尽,还足以来微信公众号
swift-cafe 中体会更多优秀。

CarthageGitHub
上的主页:https://github.com/Carthage/Carthage

更多赏心悦目内容可关注微信公众号:
swift-cafe

 
平日会听到患者,或者医务人员本人埋怨哪个医院怎么着糟糕,用一个难堪的词语“很垃圾”,须不知,逞口舌之快容易。但是您究竟知不知道,中国是个人口大国,也是农业强国,15亿人数,超越8亿是庄稼人。

   
诚然,大家国家有大医院,也有小诊所,尤其是贫穷落后的山区至今缺医少药。大医院当然好,有一级的装备,一流的浓眉大眼,一级的技巧与劳动。

然则大医院的临床资源毕竟是简单的。不是各种病人都能有此幸运,有时机,有丰富的经济力量,可以进大医院,更难受的,多少生命等不及去大医院排队,就死在伺机的中途。

 
你最看不起的“垃圾”小乡镇,或者县级医院,关键时候却能救你的命。每个医院,每个人的起源不等同,能力有高低之分,然而您要看到,小诊所也在日益进化,水平在日益增长,大家也在持续擢升与前进。

 
医院再小,医师的能力不可以与大医院的专家助教一视同仁,可是我们一样有一颗仁心,同样有作为一名医者基本的心情,咱们也在前进,在不遗余力,希望将来为您排除更多病痛,提供更优质标准的劳务。

 
法学是人经济学科,不得以和商贸属性的生意不分畛域。这并不是一个交由与收益可以成正比的差事。假若您想要更多的钱,不要学医,因为它不容许一向提供您更多的钱。尽管同样多的精力你用来投资工作,或许已经是家财万贯。然则,工学却是不可以以此来论的,因为病人的人命本身就是珍稀的。由此,我觉得农学是神圣的,作为一名医者也是高傲与荣耀的。

 
作为一名县级医院的医者,我领会我要好万分不足,但是大家也在拼命,我晓得自己解决不了你的问题,不过我愿意自己至少能告诉你,你该去何地,哪个地方能救得了您,我不可能提供你直接的匡助与劳动,不过请相信我,至少自己不会害你。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图