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

说起 iOS 开发的包管理,大家就不由得会想起 CocoaPods,
它确实是一个强有力的工具。但本次我们来关爱此外一个包管理工具
Carthage,假诺说 CocoaPods 像一个航母,一应俱全,坚实稳固。那么 Carthage
就像一艘巡洋舰,机动灵活,攻击连忙。

We live in cities you'll never see on screen

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 directorydiff: /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

Not very pretty, but we sure know how to run things

并不热闹,可咱们能自由跑动穿梭,自得其乐

--------Lorde

7年前的一个下午,我随四姨移民新西兰,在从迪拜到新西兰的飞机上,我告别乡愁,翻过围墙,开端了琢磨这多少个自由世界的路程,我从岳母这已经听说,这是个美到纯净无暇的地方,不过当自身熬过,11个时辰45分钟的长距离飞机,再次睁开双眼的时候,我竟没有想到的是,这是本身第一次看到地球的样子...

自我小姑常年定居在布达佩斯,是新西兰的经济主导,然而我却看不到她与自己家乡迪拜太多相似的地方,那里的城市人仿佛生活过得可怜慢,懒洋洋的太阳总能透过天空塔的上边,披在每一个Kiwi(新西兰人)的随身,
每个人的面颊没有太多忧容,也接近没有抑郁。

(倘若你未播放音乐,请在篇章顶端点击播放,欣赏全文,这首歌是特别用心配的,强烈推荐)

渐渐地,我在这些漂亮的城市,读上了地点口碑不错的高中,有了成百上千爱人,我初步对这些陌生的都市,渐渐的留下了和谐的足迹,看着皇后街上的急促行人,来自全球的繁多,相聚到同一个国度,我们说着不同的语言,不同的肤色,不同的文化,不同的宗派,不同的信仰,但是,大家从未歧视,没有诬陷,没有战火...

(照片来自:Wesklake high school 校友 facebook ID yilong Wang)

(照片来自:作者高中Wesklake high school 校友 facebook ID yilong
Wang)

(照片来自:作者高中Wesklake high school 校友 facebook ID Eddie Wu)

正如伟大的戏剧家,约翰(John).列侬在歌曲《imagine》唱到的:

Imagine there's no countries

自己希望一个并未国界的世界

It isn't hard to do

实则并非有多忙碌

Nothing to kill or die for

不曾杀戮,没有合眼

And no religion too

从未此外宗教的紧箍咒

Imagine all the people

目的在于拥有的人

Living life in peace

和平相处

You may say I'm a dreamer

您或许说自己是个爱做白日梦的人

But I'm not the only one

但我并不孤单

五岁时,大姑告诉自己,人生的关键在于快乐。上学后,人们问我长大了要做什么,我写下“快乐”。他们告诉我,我知道错了问题,我告诉他们,他们领略错了人生。

——约翰·列侬

本身多么希望,约翰(约翰(John))列侬假使还活着,可以看一眼现在的世界,原来地球上真正有一个地点,就如他当即的梦一般美。

进了大学未来,自从迷上了霍金的万物理论和岁月简史,我对这些世界的观点,和研究逻辑彻底改变了,我起来万分崇尚科学的神态,认为文学是没错的前生,人们用持续的自我批评,自我推翻的章程,从苏格拉底,柏拉图(Plato),Alerander,到亚里士Dodd,后来的牛顿,爱因斯坦,波尔平昔到现行的霍金,人类史上前所未有的奋不顾身史,这几个伟大的有名气的人,穷尽一生,在松开人类对自然界认知的界限,使所有人类前进。

随即,在对正确非凡崇拜的真情实意下,对宗教有了苛刻的偏见,我以为宗教之所以能够延续至今,是源于其本质,宗教的本色是信,科学的本色是质问,中世纪的亚洲,教皇恰巧利用宗教举行愚民政策,皇室与教皇之间的战乱不断,在历史上,南美洲相当时期被叫作粉色的中世纪,纵观历史至今,大型战争都是缘于宗教,不过科学不等同,科学当然也有副成效,不过给人类带来的向上和科技总之,送我们的运载火箭上天,宗教能嘛?

而自己的亲娘,是位素食主义,非凡诚恳的一位喜欢打坐冥想的人,她更执着于宿命因果论,大家立马一度因为微微思想上的不合拍,总是争吵,结果每一回皆以互相不可能说服对方而告终。直到有两次,在又一场,面红耳赤的激烈辩论后,她压下声线,冷静的问我,请用你的没错,解释一下慈悲是咋样?

说实话,在他说这句话从前,我和她吵架基本五五开,我有时候仍能占点上风,这下,慈悲这多少个词,先是让自己语塞,后是让自家构思,我穷极所能,想到的都是近义词,悲悯?仁慈?不过都类似上升不到非凡低度,总是适得其反。

日趋地,我先河盘算,什么是爱心,是否真正有西方存在?

想必,那是一个从未有过标准答案的题目,就像佛家说的,不可说,不是无话可说,而是妙不可言。而自己只明白,我们无法用科学的名义,去绑架那多少人的归依,不然我们和中世纪的教皇和近代的独裁者又有何分别吗?自由和道义,才是西方的条条框框。你若没有一颗慈悲的心,急功近利,去地球上的哪你都会抱怨。

就此,我想慢下来,来伊甸山看看天际的余晖

体验下山头上,风吹草低见牛羊

骑着马匹,吹着口哨

到山顶,吹个风

看三遍,小学语文书上的彩云

坐在皇后街的街边,看着人群,听着流浪歌手的吉他声

去佛光山吃一回素食

在Takapuna海岸边跑两次步

看四回清晨的City星星点点

人活一世,太多地点要去,太多路要走,可能大家的家园遭到污染,遭到破坏,可是只要这就是让您相差家乡的理由,你并不值得光荣或是幸运,我们有诸多地点正在努力立异,更进,珍视环境和自然,解决社会问题。

不错,新西兰的纯净,人民的质朴,地质资源的增长,都是其一国家最奇特的财富,这是纯属的人间天堂。

而是,真正的极乐世界,却深埋在你内心的深处,这是对宇宙万物的爱护和慈善。

人类的卫星探测器,飞行至今,也没觉察太阳系有和地球相对类似的契合生命体生存的星星,不是太热,就是太冷,要不就一直不光,地球就像一个偶然存在于宇宙。

护卫地球,因为地球曾是宇宙的天堂。

本公众号你富有图片均源于于分别原创壁画师提供,需转载请联系

LEO微信ID:Maomao_Fai

鹏鹏微信ID:Hell_Heart

假使你以为喜欢的话,分享给心上人,非凡雅观

您的转会与关心将变为,原创作品最大的襄助!

本公众号中享有文字内容均为原创,百折不挠原创!

§§

踏过废土,不辨虚无

寄 明 日 书

欢迎扫下方二维码关注

本公众号已开展原创标识,还有读者访客留言效率,欢迎我们积极参加留言~!

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。