创建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文件
- 单击Xcode左上方的方案,然后选择“管理方案”。 我们应该将我们的方案标记为“共享”,以便可以用迦太基构建它
时间到了
现在我们必须设置我们的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,现在您应该获得:
到这里,我们终于可以开始编码了,但这将在下一部分中。 到时候那里见!