用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” 复选框
用Carthage创建您的第一个iOS框架(翻译)_第1张图片
Paste_Image.png
  • 选择您要保存项目的目录。
  • 取消选中“Create Git repository on My Mac”,之后手动设置
  • 单击“Create”,项目将在Xcode中打开。
  • 点击File→ Save As Workspace,将workspace文件和xcodeproj文件保存在同一目录下,使用相同的名称。 我们把项目放在一个工作空间,因为我们将添加我们的Carthage依赖作为子模块; 它们必须位于Xcode的工作区中才能构建它们。
  • 关闭项目
  • 打开workspace
  • 选择“Manage Schemes”,勾上后面的“shared”
用Carthage创建您的第一个iOS框架(翻译)_第2张图片
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。 它将包含私有依赖,如我们的测试框架。 我们将使用Quick 和Nimble。
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项目的导航器。

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


用Carthage创建您的第一个iOS框架(翻译)_第3张图片
Alt text

链接运行时依赖关系

  • 在导航器中选择“RGB”,并在中间侧边栏选择“RGB”目标,选择“构建阶段”选项卡并展开“链接库二进制文件”部分。
  • 单击“+”图标,并从Curry-iOS目标中选择Curry.framework
  • 单击“Add”
用Carthage创建您的第一个iOS框架(翻译)_第4张图片
Alt Text

链接开发依赖

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

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

你可能感兴趣的:(用Carthage创建您的第一个iOS框架(翻译))