创建ReactiveSwiftRealm-第1部分

如果您已经阅读了我的上一篇文章,您会知道这正在发生。 我将分享有关如何创建ReactiveSwiftRealm软件包的整个过程,包括对Carthage和Cocoapods的支持。 在这第一篇文章中,我将解释如何将项目设置为准备好迦太基/ Cocoapods和子模块。

创建Xcode项目

首先,我将创建该程序包所在的Xcode项目。

  • 选择文件->新建->项目
  • 从iOS标签中的Framework&Library选项中选择“ Cocoa Touch Library”
  • 单击“下一步”并填写选项。 选中“包含单元测试”选项(因为我们要测试软件包)
  • 选择保存项目的位置
  • 取消选中“在My Mac上创建Git存储库”,因为我们将手动对其进行设置
  • 单击创建,Xcode将打开项目
  • 现在转到File-> Save As Workspace,并使用相同的名称将其保存在Xcode项目所在的目录中。 我们正在使用工作区,以便将支持依赖项作为子模块。 它们必须在工作区中,以便Xcode对其进行编译。
  • 使用文件->关闭项目关闭Xcode项目
  • 从finder或使用File-> Open打开Workspace文件
  • 单击Xco​​de左上方的方案,然后选择“管理方案”。 我们应该将我们的方案标记为“共享”,以便可以用迦太基构建它

时间到了

现在我们必须设置我们的git repo。 在开始之前,请导航到终端中保存项目的目录,然后:

  • 运行git init初始化一个空的存储库。
  • 创建一个.gitignore文件,以便git不会跟踪我们不想跟踪的依赖文件。

您可以将以下示例标准用于Swift项目:

  OS X搜寻器 
.DS_Store

构建生成
建立/
衍生数据

各种设定
* .pbxuser
!default.pbxuser
* .mode1v3
!default.mode1v3
* .mode2v3
!default.mode2v3
* .perspectivev3
!default.perspectivev3
数据

其他
* .xccheckout
*。移开
* .xcuserstate
* .xcscmblueprint

Obj-C / Swift特定
* .hmap
* .ipa

迅捷软件包管理器
。建立/

迦太基
迦太基/建造
  • 运行git add。
  • 和git commit -m“项目设置”

迦太基和附属物

  • 首先在项目中创建一个名为Cartfile的文件,然后向其添加我们的运行时依赖项。 我们将添加Realm和ReactiveSwift:
  github“ realm / realm-cocoa” 
github的“ ReactiveCocoa / ReactiveSwift”〜> 1.0

此时,我们可以添加私有依赖项(例如,例如测试框架),但是在这种情况下我们不需要任何依赖项。

现在,我们将创建一个脚本,以使我们的贡献者(和我们)成为设置项目和依赖项的简单方法。

  • 使用终端创建bin / setup脚本(在我们的项目文件夹中)
 麦克迪尔·本 
触摸仓/设置
chmod + x bin /设置
  • 打开垃圾箱/设置并粘贴:
 !/ usr / bin / env sh 

如果! 命令-v carthage> / dev / null; 然后
printf'未安装迦太基。\ n'
printf'有关安装说明,请参见https://github.com/Carthage/Carthage。\n'
1号出口
科幻

迦太基更新--iOS平台--use-submodules --no-use-binaries

在此脚本中,我们检查是否安装了Carthage,然后运行其update命令以安装依赖项。 我们使用了use-submodules,因此我们的依赖项被添加为子模块。 如果需要的话,这使我们可能的用户可以在Carthage之外使用框架。 我们使用-无用户二进制文件,因此我们的依赖关系建立在我们的系统上。

准备好bin / setup后,让我们运行它,以便Carthage下载我们的依赖项。

  • 在终端运行中:bin / setup

现在我们已经准备好迦太基设置,将其保存为提交。

向工作区添加依赖项

现在我们有了依赖项作为子模块,我们需要将它们添加到工作区中。

打开“迦太基/结帐”,然后将每个依赖项的.xcodeproj添加到工作区的根目录。 您可以将它们从Finder拖到Xcode项目的导航器中。

它看起来应该像这样:

链接依赖

  • 在导航器中选择我们的项目(ReactiveSwiftRealm),并选择ReactiveSwiftRealm作为Target后,转到“ Build Phases”选项卡,然后展开“ Link Binary with Libraries”部分。
  • 单击“ +”图标,然后选择:ReactiveSwift.framework,Realm.framework,RealmSwift.framework,Result.framework。 全部来自iOS目标(有些可能包含macOS目标framworks,请仔细检查您是否包含iOS目标)
  • 点击“添加”

现在我们已经完成了迦太基的设置,并保存了另一个提交。

椰子足

添加CocoaPods支持非常容易。 我们必须在项目的根目录下创建一个.podspec文件,并填写我们的项目信息。

  • 创建一个名为ReactiveSwiftRealm.podspec的文件
  • 复制下面的示例并将其粘贴到文件中
  • 更改它以适合您的项目详细信息。 还有很多可用的选项,但在该项目中我们不需要它们。
  Pod :: Spec.new做| spec | 
spec.name =“ ReactiveSwiftRealm”
spec.version =“ 1.0.0”
spec.summary =“将响应式快速功能添加到Realm”
spec.homepage =“ https://github.com/bitomule/ReactiveSwiftRealm”
spec.license = {类型:“ MIT”,文件:“ LICENSE”}
spec.authors = {“ David Collado” =>'bitomule@gmail.com'}
spec.social_media_url =“ http://twitter.com/bitomule”

spec.platform =:ios,“ 9.1”
spec.requires_arc = true
spec.source = {git:“ https://github.com/bitomule/ReactiveSwiftRealm.git”,标记:“#{spec.version}”,子模块:true}
spec.source_files =“ ReactiveSwiftRealm / ** / *。{h,swift}”

spec.dependency“ RealmSwift”,“〜> 2.2.0”
spec.dependency“ ReactiveSwift”,“〜> 1.0.0”
结束

当我们希望我们的软件包支持CocoaPods时,我们还必须在Cocoapods中添加依赖项。

文件完成并保存后,我们可以运行pod lib lint命令来测试所有配置是否正确。

您应该得到类似以下内容:

那是因为我们还没有发布该仓库,所以pod lint找不到它。 我们修复一下,但是对于一个空项目,我们将pod版本更改为1.0.0。

  • 将spec.version =“ 1.0.0”更改为spec.version =“ 0.0.1”
  • 创建GitHub存储库
  • 保存提交
  • 添加远程仓库
  • 推送(您可能必须使用git merge origin / master — allow-unrelated-histories将GitHub默认文件合并到本地存储库中)
  • 标记为0.0.1
  • 推送标签

现在尝试再次运行pod lib lint,现在您应该获得:

到这里,我们终于可以开始编码了,但这将在下一部分中。 到时候那里见!