用Carthage创建您的第一个iOS框架(翻译)

原文

如果你曾经试图创建自己的iOS框架,但是其中有诸多不便-管理依赖和编写测试不方便,本教程将引导您从头到尾创建您的第一个iOS框架,以便您可以创建一个自己的。
我们将构建一个框架,暴露一个名为RGBUIColor(red:green:blue)的函数,该函数返回根据这些值创建的新UIColor。 我们将使用Swift构建它,使用Carthage作为依赖项管理器。 我们的框架将使用Carthage,CocoaPods或git子模块。
开始吧!

设置Xcode项目

  • 选择 File → New → Project.
  • 选择 iOS → Framework & Library→Cocoa Touch Library
  • 点击 “Next” 并填写选项提示. 确定选中了 “Include Unit Tests” 复选框
Paste_Image.png
  • 选择您要保存项目的目录。
  • 取消选中“Create Git repository on My Mac”,之后手动设置
  • 单击“Create”,项目将在Xcode中打开。
  • 点击File→ Save As Workspace,将workspace文件和xcodeproj文件保存在同一目录下,使用相同的名称。 我们把项目放在一个工作空间,因为我们将添加我们的Carthage依赖作为子模块; 它们必须位于Xcode的工作区中才能构建它们。
  • 关闭项目
  • 打开workspace
  • 选择“Manage Schemes”,勾上后面的“shared”
Paste_Image.png
Paste_Image.png

然后打开终端

初始化Git

cd到你的项目目录

  • 运行git init初始化一个空的存储库。
  • 创建一个.gitignore将会阻止一些讨厌的Xcode和依赖文件,我们不想在git中跟踪。
    这里有一个标准的Swift项目.gitignore与几个修改。 我们添加了.DS_Store并删除了fastlane和额外的注释。
## OS X Finder
.DS_Store

## Build generated
build/
DerivedData

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata

## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint

## Obj-C/Swift specific
*.hmap
*.ipa

# Swift Package Manager
.build/

# Carthage
Carthage/Build

添加Carthage和依赖关系

  • 在项目目录中创建一个名为Cartfile的文件和它的运行时依赖关系。 我们将添加Curry
github "thoughtbot/Curry"
  • 创建Cartfile.private。 它将包含私有依赖,如我们的测试框架。 我们将使用QuickNimble
github "Quick/Quick"
github "Quick/Nimble"

创建 bin/setup脚本。 它用于给我们的贡献者(和我们)一个简单的方法来设置项目和依赖。

mkdir bin
touch bin/setup
chmod +x bin/setup

打开bin/setup并填写:

#!/usr/bin/env sh

if ! command -v carthage > /dev/null; then 
  printf 'Carthage is not installed.\n' 
  printf 'See https://github.com/Carthage/Carthage for install instructions.\n' exit 1
fi
carthage update --platform iOS --use-submodules --no-use-binaries

在这个脚本中,我们确保用户已安装Carthage 并运行carthage update命令来安装iOS依赖项。
我们使用--use-submodules,以便我们的依赖关系作为子模块添加。 这允许用户在Carthage之外使用我们的框架,如果他们想要的话。 我们使用--no-use-binaries,以便我们的依赖关系建立在我们的系统上。
使用bin/setup创建,让我们运行它,以便Carthage将下载你的依赖。

  • 打开终端运行bin/setup
    现在我们需要设置你的项目来构建和链接新的依赖项。

向工作区添加依赖关系

因为我们的依赖是子模块,我们需要将它们添加到我们的工作区。
打开Carthage/Checkouts,并将每个依赖项.xcodeproj添加到工作空间的根目录。 他们可以从Finder拖动到Xcode项目的导航器。

当你完成它应该看起来像:


Alt text
Alt text

链接运行时依赖关系

  • 在导航器中选择“RGB”,并在中间侧边栏选择“RGB”目标,选择“构建阶段”选项卡并展开“链接库二进制文件”部分。
  • 单击“+”图标,并从Curry-iOS目标中选择Curry.framework
  • 单击“Add”
Alt Text
Alt Text

链接开发依赖

  • 从中间侧边栏选择“RGB测试”目标。
  • 使用与之前相同的过程,将Quick和Nimble框架添加到此目标的“Link binary with libraries”部分。
    当向每个目标添加依赖项时,Xcode会自动将它们添加到“Build Settings”选项卡下的“Framework Search Paths”。 我们可以从“RGB”和“RGBTests”目标中删除这些,因为Xcode将它们视为隐式依赖关系,因为它们在同一个工作空间中。
  • 选择目标,找到“Framework Search Paths”设置,突出显示它,然后按键盘上的“backspace”。
Alt Text
Alt Text
  • 接下来,在导航器中查看“RGB”项目; 你会看到在根级别有三个新框架。 要保持此区域的组织,突出显示所有三个,右键单击并选择“New group from selection”将它们放在命名组中。 我会调用我的“Frameworks”。

现在Carthage已经设置好了,让我们添加CocoaPods。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,951评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,606评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,601评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,478评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,565评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,587评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,590评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,337评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,785评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,096评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,273评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,935评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,578评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,199评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,440评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,163评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,133评论 2 352

推荐阅读更多精彩内容