SQLCipher“sqlite_3key”警告存档和分析,没有警告调试

时间:2013-06-05 03:09:41

标签: iphone ios xcode sqlite sqlcipher

我已经按照iOS官方SQLCipher网站上的文档进行操作。我导入了sqlite3.h。我添加了openssl和sqlcipher xode.proj。它们实际上都很好。

它正在加密数据库,我可以查询它们。除了关于sqlite3_key的这个小警告外,构建都很好。

我可以看到自定义脚本的逐步构建过程,一切都很好。

我可以在头文件中看到该函数的SQLITE_HAS_CODEC条件在本机sqlite3中不存在,因为我们正在使用sqlite的sqlcipher版本。

我已将-DSQLITE_HAS_CODEC添加到C标志和C ++标志,这适用于项目和目标构建设置。

除了此警告外,整体SQLCipher工作正常:

  

函数'sqlite3_key'的隐式声明在C99中无效

在Xcode中分析和存档二进制文件时不断弹出。

通过Debug构建它不会抛出此警告。

还有什么我还需要做的吗?

1 个答案:

答案 0 :(得分:1)

我(仍然)假设您在调试和发布配置之间有一些不同的构建设置(例如“标题搜索路径”)。如果在Build Settings中找不到问题,我建议检查源文件的预处理输出:

  • 选择提供警告的.m文件。
  • 选择产品 - >生成输出 - >来自Xcode菜单的预处理文件。
  • 在预处理输出窗口的底部,切换
    • “正在运行”(默认使用调试配置)和
    • “Profiling”(使用Release配置)。

在预处理输出中,在两个版本中搜索sqlite3_key()声明。您还可以检查是否包含正确版本的“sqlite3.h”。没有标题搜索路径,就会有一行

# 1 "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include/sqlite3.h" 1 3 4

通过为SQLCipher正确设置Header Search Path,“sqlite3.h”的路径应该不同,因此您可以检查并再次比较“Running / Debug”和“Profiling / Release”输出。