Carthage 包管理工具,另一种高效轻快的 iOS & MAC 开发体验 | 斯威夫特Cafe 咖啡时光

       
在大方还从未这么复杂从前,在我们还都是儿女的时候,心绪是很单纯的,被满意便很喜形于色,受阻碍就会气馁,但凡事和人类复杂的自尊心扯上联系后,为了保持尊严保持形象,“时刻保持微笑”成了一种社交礼仪,那么,“时刻保持微笑”真的能为大家带来想象中的出色效果吗?

说起 iOS 开发的包管理,我们就不由得会想起 CocoaPods,
它真的是一个强大的工具。但这一次大家来关注其它一个包管理工具
Carthage,倘若说 CocoaPods 像一个航母,一应俱全,坚实稳固。那么 Carthage
就好像一艘巡洋舰,机动灵活,攻击火速。

   
 “英美女把社会比作蛇(snakepit)。阱里压压挤挤的蛇,一条条都使劲钻出脑袋,探出身子,把其余蛇排挤开,压下去;一个个冒出又没入的蛇头,一条条拱起又压下的蛇身,扭结成团、难分难解的蛇尾,你上自家下,你死我活,不断地挣扎斗争。”——杨季康

始发采用 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

        积极心思具有如此多的便宜,而且詹姆士(James)说人先微笑才深感喜形于色的。那么
“时刻保持微笑”看似如故很有道理的。然则事实确实这么呢?

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
各有高低,如何接纳,就要看各位自己的须要了。

       
杨季康先生这几句话极度精辟的描写了现代社会可以竞争处境,社会成为了一个光辉的楼梯,每向上爬一个阶梯都要承受着巨大的压力。钻出头,便认为舒心,钻不出头,便悄然。可又不愿人寓目那幅
“战败者”
的面容,便不停在人前挂上微笑。“打落牙齿和血吞”、“别把口子给人看”。那总是让自家联想到大漠孤烟,孤独英雄,躇躇独行。衣香鬓影高睨大谈背后的强颜欢笑何人又能瞒过哪个人啊?

       
最终的结论是,微笑唯有对于那一个真的感到到热情洋溢后才微笑的人的话才能拉动如沐春风的觉得,而对那个强颜欢笑的人而言,微笑的痛感并没那么快意。由于微笑本身与社会意义的离别,微笑的动作并不可以确实增添个体的幸福感和健康水平,唯有真正洋洋得意的时候的微笑才能起到积极感情的那多少个有益效率。对那一个平时强颜欢笑故作坚强的人来说,时间久了,微笑不再是开玩笑幸福的意味,正如一向在很拼命的表现喜形于色,最后连真的开心是怎么着感觉都忘记了。

       
前不久,花旗国社会情绪学杂志上登载了由United States和香港(Hong Kong)的感情学家共同做的一项探究。商量结果发现
“时刻保持微笑”
会下跌幸福感,笑并不是万能药。商量人员做了七个实验,实验中,探究人口会询问被试一文山会海题材,包涵生活开不心潮澎湃,后天微笑了一回,人们微笑是因为觉得开心依然打算感到欢天喜地才笑,以及在回看哪些情形时她们会微笑。

       
和有着的能动词汇一样,微笑也令人联想到成功,幸福,美好,丰裕的资源、优越的身价等等。人的一言一动只要赋予社会意义就在大势所趋水平上和其本身的固有意义分离。取得成绩感到甜蜜一定会让人发自内心的微笑,假如没有尖锐的打听,大家也会自动化的以为,那么些笑的很手舞足蹈的人是因为生存顺利幸福。微笑貌似可以骗过别人,不过的确会骗过自己吗?时刻保持微笑真的就能感觉到喜形于色了吗?那种故作坚强对我们的心灵有益呢?为啥有人得了“微笑焦虑症”?

       “幽默疗法”
可以被视为心境外周理论的使用。通过有趣的不二法门诱发人们的笑脸来起到应对抑郁,消除悲伤心绪的不良影响的功用。本质上依然接纳积极心境来对抗黯然心境。积极心情从其自身来说,是与某种必要取得满意相关联,并伴随着兴奋的不合理感受。处在积极心境的大家,思维活跃,免疫系统可以更有效的办事,血压会下跌,对疼痛耐受性升高,社会紧张关系得到缓解。

       
依然老生常谈的话,生活就是生下来活下来,时期起起落落,不如意十有八九。与
其强颜欢笑苦了协调,还不如真诚地面对自己的感受,管理心绪,从偏重和询问自己的心怀开端,寻找生活中那几个会打开自己快活开关的场景,然后用力留住并尊重令我们身心舒畅人或物。尽力幸免那个会令大家悲哀流泪沮丧愤怒的气象,避不开的,会难熬也是人之常情。沮丧心境固然会危害大家的健康,但是漠视自己的感情仍然弄虚作假的手舞足蹈却是自己持刀对着自己。

        最终,但愿那篇小文能将精诚的微笑送到你的脸孔。

       
心情学中有局地针锋相对的心理理论,第一种认为,是先有心境后有走动。大家哭泣是因为痛楚,笑是因为心潮澎湃;美利坚同盟国心绪学詹姆士(James)则提议是生理反应导致了心思,即先有生理变化后有情感,忧伤由哭泣引起,愤怒由打斗而致,恐惧由颤栗而来,和颜悦色由发笑而生。并且有人做过一文山会海试验评释了那种说法。丹麦王国心绪学家卡尔(卡尔)·兰格同时发表了一般的论战,由此那么些理论被称作“詹姆士-兰格理论”。因为这一说法肯定了外周神经系统在心思调控中的作用,因而也被称呼心境的外周理论。

Post Author: admin

发表评论

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