我正在将一个大型的iOS应用模块化,比如说MyAppWithDatabase
分为两个模块(即项目)。因此,在同一个工作区MyApp
下,我将有一个主项目MyDataPlatform
作为主机,并有一个链接的MyApp.xcworkspace
作为框架。当将SQLCipher
pod集成到目标MyAppWithDatabase
时,它可以很好地工作,但是由于所有与数据库相关的代码都在重构中移入MyDataPlatform
框架中,因此我只想为该框架集成SQLCipher
pod,以使内部加密机制从主机应用程序中抽象出来。现在,当我为框架集成时,它开始产生以下构建错误。
请注意,此问题是由MyApp
的源代码声明引起的,作为警告,但Xcode构建将其视为错误,
sqlite3_key(_db, [password UTF8String], (int)password.length);
我上面的那一行仍然保留在
MyApp
中,因为将与数据库相关的代码逐渐移到MyDataPlatform
中需要花费时间,并且我认为SQLCipher header 仍然应该作为链接中的相关框架在主机应用中可用。我在互联网上浏览了许多拟议的solutions,但没有一个适合我的情况。我怀疑大多数解决方案都只针对主机应用程序集成
SQLCipher
。如果遇到我的框架错误,该怎么办?下面是我的pod文件的结构(重构后),
# Uncomment this line to define a global platform for your project
platform :ios, '9.0'
workspace 'MyApp.xcworkspace'
target 'MyApp' do
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
use_frameworks!
pod 'Google/Analytics'
pod 'GoogleMaps'
# ...
target 'MyAppTests' do
inherit! :search_paths
end
end
target 'MyDataPlatform' do
project 'MyDataPlatform/MyDataPlatform.xcodeproj'
pod 'SQLCipher', '~>3.4.2'
#https://discuss.zetetic.net/t/ios-11-xcode-issue-implicit-declaration-of-function-sqlite3-key-is-invalid-in-c99/2198/53
post_install do | installer |
print "SQLCipher: link Pods/Headers/sqlite3.h"
system "mkdir -p Pods/Headers/Private && ln -s ../../SQLCipher/sqlite3.h Pods/Headers/Private"
end
end
以前
SQLCipher
集成在MyAppWithDatabase
下,即# Uncomment this line to define a global platform for your project
platform :ios, '9.0'
target 'MyAppWithDatabase' do
# Uncomment this line if you're using Swift or would like to use dynamic frameworks
use_frameworks!
pod 'Google/Analytics'
pod 'GoogleMaps'
pod 'SQLCipher', '~>3.4.2'
# ...
target 'MyAppWithDatabaseTests' do
inherit! :search_paths
end
end
最佳答案
在应用程序中定义SQLITE_HAS_CODEC
后,我的问题解决了,
MyApp -> Build Settings -> Other C Flags
在应用程序中添加
SQLITE_HAS_CODEC=1
后,另一种解决方案也可以使用,MyApp -> Build Settings -> Preprocessor Macros
关于ios - Xcode构建错误- “Implicit declaration of function ‘sqlite3_key’在C99中无效”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59525583/