在 Swift 项目中包含 SQLCipher pod 时如何避免构建错误?
Posted
技术标签:
【中文标题】在 Swift 项目中包含 SQLCipher pod 时如何避免构建错误?【英文标题】:How do I avoid build errors when I include SQLCipher pod in Swift project? 【发布时间】:2020-11-12 11:36:23 【问题描述】:我正在使用sqlite.swift
当我将它包含在我的 pod 文件中时:
pod 'SQLite.swift/SQLCipher', '~> 0.12.2'
SQLCipher 是否仍与 SQLite.swift 兼容? 我需要额外的 pod 语句来导入 SQLCipher 和 SQLite 还是只需要这一行?
XCode 在我构建时报告错误,如下所示:
/Pods/SQLCipher/sqlite3.h:6907:10:重新定义“sqlite3_index_orderby” /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.0.sdk/usr/include/sqlite3.h:6758:10:之前的定义在这里 Pods/SQLite.swift/Sources/SQLiteObjc/include/SQLiteObjc.h:26:9:在构建从 /Library/Developer/Xcode/DerivedData/SpeechCollector-btdxklvmapneuigwvexrhccrhodq/Build/Products/Debug-iphonesimulator/SQLite 导入的模块“SQLite3”时.swift/SQLite.framework/Headers/SQLiteObjc.h:26: /:2:9: 在从 :2 包含的文件中: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.0.sdk/usr/include/sqlite3ext.h:20:10:在/Applications/Xcode.app/包含的文件中目录/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.0.sdk/usr/include/sqlite3ext.h:20:
【问题讨论】:
【参考方案1】:我们的项目遇到了同样的问题,在解决之前我们无法更新到下一个 Xcode。
repo SQLite.swift 看起来已被废弃,但在拉取请求中,this one 为我们的项目解决了问题。
我们所做的是下载 repo 并将其添加为本地依赖项(我们使用的是 Cocoapods),然后我们添加了该 PR 中出现的更改。
在文件SQLiteObjc.h
中,我们从
@import Foundation;
#if defined(SQLITE_SWIFT_STANDALONE)
@import sqlite3;
#else
@import SQLite3;
#endif
到
@import Foundation;
#if defined(SQLITE_SWIFT_STANDALONE)
@import sqlite3;
#elif defined(SQLITE_SWIFT_SQLCIPHER)
@import SQLCipher;
#else
@import SQLite3;
#endif
希望这对你也有帮助。
【讨论】:
以上是关于在 Swift 项目中包含 SQLCipher pod 时如何避免构建错误?的主要内容,如果未能解决你的问题,请参考以下文章
Parse Server Swift Logic 用于抓取数组中包含的所有项目
在android studio的apk中包含.so库[重复]
我想在swift或objective-c中包含BluetoothManager框架,有问题