使用 Swift 包管理器、Cocoa Pods 或其他工具将最小 GRDB 添加到 Xcode 项目
Adding minimal GRDB to an Xcode project using Swift Package Manager, Cocoa Pods, or other
来自 GRDB on github 的演示 iOS 应用程序在我的 iMac 的 phone 模拟器上运行良好,但不清楚如何在 iOS 应用程序中构建 GRDB我自己的(这个问题的第 1 部分),使用最少的组件(这个问题的第 2 部分)。1
GRDB installation instructions建议提供一个选项:"Swift Package Manager"。由于我是这个编程环境的新手,这听起来像 "the right way",但在尝试之后,我仍然在猜测如何成功构建我的项目。
目前完成的步骤:
- 创建了一个新项目
Applications > Xcode (9.4 beta) > Create a new Xcode project > Single View App > "FirstDb"
- 将
import GRDB
放入视图控制器(显然还不能编译)
- 应用程序 > 实用程序 > 终端
cd /Users/owner/documents/xcodeprojects/firstdb
mkdir GRDB
cd GRDB
swift package init --type library
- 编辑
Package.swift
,在适当的位置添加 .package(url: "https://github.com/groue/GRDB.swift.git", from: "2.10.0")
- 应用程序 > 实用程序 > 终端
swift package resolve
(结果为'Fetching'、'Cloning'、'Resolving')
状态
在 Product > Build
之后,import GRDB
行仍然显示 no such module
.
因此问题的第 1 部分仍未解决。我还没有能够解决问题的第 2 部分。很抱歉,如果这些中的一个或两个对于富有的 Xcode 开发人员来说是显而易见的,但是在研究了这个问题之后,我没有找到具体的指导。
使用 SPM 不是必需的,因此如果集成 GRDB 的其他选项是更好的选择,我想看看如何使用其中之一进行集成。
脚注
- 我想了解仅添加使用
Record
对象所需的 GRDB 部分并能够执行 SQL 语句所需的步骤iOS 项目。假设在使用 GRDB 基础知识的项目中不需要完整包的大部分(测试、观察等),从而产生更紧凑的 iOS 应用程序。
complete GRDB installation instructions不建议使用Swift包管理器。他们说您可以使用 SPM。
SPM 无法与现有 Xcode 项目集成。相反,SPM 可以生成 Xcode 项目:如果您真的需要 SPM,请获取有关此的信息。例如,参见 https://www.raywenderlich.com/148832/introduction-swift-package-manager
不过还有其他选择:GRDB安装说明上说也可以使用CocoaPods,手动安装。迦太基是另一种可能性(但不完全推荐)。因此,我建议您切换到 CocoaPods,这是将 GRDB 和其他库集成到您的 Xcode 项目中的最简单方法。
I would like to understand the steps required to add only the portions of GRDB that are required to use the Record object and to be able to execute SQL statements for an iOS project. The presumption is that much of the complete package (tests, watch, etc, is not required in the project using the GRDB basics, resulting in a more compact iOS application.
Apple Watch 的测试和支持不会使您的应用程序膨胀:GRDB 只向应用程序公开它们需要的内容。例如,测试是 GRDB 存储库的一部分(因为没有测试就无法发布一个健壮的库),但它们不是库本身的一部分。现在 GRDB 是一个 整体 库,而不是几个库的伞:你不能拆分 GRDB 并只选择你想要的部分。例如,记录类型和 SQL 支持始终可用。但是,有独立的配套库,例如 RxGRDB,您可以选择使用或不使用。
CocoaPods
正如作者所指出的,Swift Package Manager 只是一个选项并且是 "not known to integrate with existing Xcode projects",因此可能不是一个好的选择。因此,为了解决问题的第一部分,下面显示了使用 Cocoa Pods
集成 GRDB
的技术。
Cocoa Pods 安装
基于 this tutorial,如果您的 OS 是 OS X 10.7 或更高版本,您应该能够安装 CocoaPods 而无需先下载任何东西.
Applications > Utilities > Terminal
sudo gem install cocoapods
pod setup --verbose
我的安装似乎工作正常,但生成的日志记录比教程显示的多。
与现有项目集成
- 创建了一个新项目
Applications > Xcode (9.4 beta) > Create a new Xcode project > Single View App > "FirstDb"
- 这创造了
/Users/owner/documents/xcodeprojects/FirstDb/FirstDb.xcodeproj
- 将
import GRDB
放入视图控制器(显然还不能编译)
- 关闭Xcode!(稍后我们将访问它,通过xcworkspace,而不是xcode 项目)
Applications > Utilities > Terminal
cd /Users/owner/documents/xcodeprojects/firstdb
pod init
open -a Xcode PodFile
让你的文件指定 GRDB:
platform :ios, '9.0'
target 'FirstDb' do
use_frameworks!
pod 'GRDB.swift'
end
这没有利用可用的版本控制功能,因此您需要确保 GRDB 在增强时没有引入重大更改。
使用CocoaPods得到GRDB
现在是下载GRDB的时间:
Applications > Utilities > Terminal
cd /Users/owner/documents/xcodeprojects/firstdb
pod install
你应该看到这样的东西:
Analyzing dependencies
Downloading dependencies
Installing GRDB.swift (2.10.0)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `FirstDb.xcworkspace` for this project from now on.
....
使用 GRDB 导入构建项目
现在打开 workspace 文件 FirstDb.xcworkspace
(不是 proj 文件)。在左侧的项目大纲中,您应该会看到您的起始项目以及 Pods
:
FirstDb
Pods
构建工作区 (Product > Build
),您应该会看到 ViewController 中的 import GRDB
行编译没有错误。
来自 GRDB on github 的演示 iOS 应用程序在我的 iMac 的 phone 模拟器上运行良好,但不清楚如何在 iOS 应用程序中构建 GRDB我自己的(这个问题的第 1 部分),使用最少的组件(这个问题的第 2 部分)。1
GRDB installation instructions建议提供一个选项:"Swift Package Manager"。由于我是这个编程环境的新手,这听起来像 "the right way",但在尝试之后,我仍然在猜测如何成功构建我的项目。
目前完成的步骤:
- 创建了一个新项目
Applications > Xcode (9.4 beta) > Create a new Xcode project > Single View App > "FirstDb"
- 将
import GRDB
放入视图控制器(显然还不能编译) - 应用程序 > 实用程序 > 终端
cd /Users/owner/documents/xcodeprojects/firstdb
mkdir GRDB
cd GRDB
swift package init --type library
- 编辑
Package.swift
,在适当的位置添加.package(url: "https://github.com/groue/GRDB.swift.git", from: "2.10.0")
- 应用程序 > 实用程序 > 终端
swift package resolve
(结果为'Fetching'、'Cloning'、'Resolving')
状态
在 Product > Build
之后,import GRDB
行仍然显示 no such module
.
因此问题的第 1 部分仍未解决。我还没有能够解决问题的第 2 部分。很抱歉,如果这些中的一个或两个对于富有的 Xcode 开发人员来说是显而易见的,但是在研究了这个问题之后,我没有找到具体的指导。
使用 SPM 不是必需的,因此如果集成 GRDB 的其他选项是更好的选择,我想看看如何使用其中之一进行集成。
脚注
- 我想了解仅添加使用
Record
对象所需的 GRDB 部分并能够执行 SQL 语句所需的步骤iOS 项目。假设在使用 GRDB 基础知识的项目中不需要完整包的大部分(测试、观察等),从而产生更紧凑的 iOS 应用程序。
complete GRDB installation instructions不建议使用Swift包管理器。他们说您可以使用 SPM。
SPM 无法与现有 Xcode 项目集成。相反,SPM 可以生成 Xcode 项目:如果您真的需要 SPM,请获取有关此的信息。例如,参见 https://www.raywenderlich.com/148832/introduction-swift-package-manager
不过还有其他选择:GRDB安装说明上说也可以使用CocoaPods,手动安装。迦太基是另一种可能性(但不完全推荐)。因此,我建议您切换到 CocoaPods,这是将 GRDB 和其他库集成到您的 Xcode 项目中的最简单方法。
I would like to understand the steps required to add only the portions of GRDB that are required to use the Record object and to be able to execute SQL statements for an iOS project. The presumption is that much of the complete package (tests, watch, etc, is not required in the project using the GRDB basics, resulting in a more compact iOS application.
Apple Watch 的测试和支持不会使您的应用程序膨胀:GRDB 只向应用程序公开它们需要的内容。例如,测试是 GRDB 存储库的一部分(因为没有测试就无法发布一个健壮的库),但它们不是库本身的一部分。现在 GRDB 是一个 整体 库,而不是几个库的伞:你不能拆分 GRDB 并只选择你想要的部分。例如,记录类型和 SQL 支持始终可用。但是,有独立的配套库,例如 RxGRDB,您可以选择使用或不使用。
CocoaPods
正如作者所指出的,Swift Package Manager 只是一个选项并且是 "not known to integrate with existing Xcode projects",因此可能不是一个好的选择。因此,为了解决问题的第一部分,下面显示了使用 Cocoa Pods
集成 GRDB
的技术。
Cocoa Pods 安装
基于 this tutorial,如果您的 OS 是 OS X 10.7 或更高版本,您应该能够安装 CocoaPods 而无需先下载任何东西.
Applications > Utilities > Terminal
sudo gem install cocoapods
pod setup --verbose
我的安装似乎工作正常,但生成的日志记录比教程显示的多。
与现有项目集成
- 创建了一个新项目
Applications > Xcode (9.4 beta) > Create a new Xcode project > Single View App > "FirstDb"
- 这创造了
/Users/owner/documents/xcodeprojects/FirstDb/FirstDb.xcodeproj
- 将
import GRDB
放入视图控制器(显然还不能编译) - 关闭Xcode!(稍后我们将访问它,通过xcworkspace,而不是xcode 项目)
Applications > Utilities > Terminal
cd /Users/owner/documents/xcodeprojects/firstdb
pod init
open -a Xcode PodFile
让你的文件指定 GRDB:
platform :ios, '9.0'
target 'FirstDb' do
use_frameworks!
pod 'GRDB.swift'
end
这没有利用可用的版本控制功能,因此您需要确保 GRDB 在增强时没有引入重大更改。
使用CocoaPods得到GRDB
现在是下载GRDB的时间:
Applications > Utilities > Terminal
cd /Users/owner/documents/xcodeprojects/firstdb
pod install
你应该看到这样的东西:
Analyzing dependencies
Downloading dependencies
Installing GRDB.swift (2.10.0)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `FirstDb.xcworkspace` for this project from now on.
....
使用 GRDB 导入构建项目
现在打开 workspace 文件 FirstDb.xcworkspace
(不是 proj 文件)。在左侧的项目大纲中,您应该会看到您的起始项目以及 Pods
:
FirstDb
Pods
构建工作区 (Product > Build
),您应该会看到 ViewController 中的 import GRDB
行编译没有错误。