我有一个使用SQLCipher读取和写入加密数据库的应用程序。
想要使用Firebase,我偶然发现了两个问题:
首先,有些......将-l"sqlite3"
添加到我的Pods/Target Support Files/Pods-ProjectName/Pods-ProjectName.debug.xcconfig
(以及release
,ofc)。因此,我的应用程序的SQL失败并显示错误file is encrypted or is not a database
。
我通过向post_install
添加Podfile
来解决此问题,该no such table: s2dRmqIds
会删除所有配置文件中的内容。
执行此操作后,Firebase SQL启动失败,错误为@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
throws ServletException, IOException {
String authToken = request.getHeader(this.tokenHeader);
System.out.println(authToken + " ##########################");
String username = flTokenUtil.getUsernameFromToken(authToken);
if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
UserDetails userDetails = this.userDetailsService.loadUserByUsername(username);
if (flTokenUtil.validateToken(authToken, userDetails)) {
UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
userDetails, null, userDetails.getAuthorities());
authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
SecurityContextHolder.getContext().setAuthentication(authentication);
}
}
chain.doFilter(request, response);
}
。
AFAIK,没有办法在同一个项目中使用SQLite和SQLCipher,因为它们是互补的。
知道Firebase试图保存在该表中的是什么?或者有多少问题?或者,如果我可以改变存储机制?或者如果它是(已知的)错误?
答案 0 :(得分:1)
有一个相同的问题,几个小时后,找到了[解决方案]!
-framework SQLCipher
就是这样!)
现在,Firebase和SQLCipher将共同生活在一起。
答案 1 :(得分:0)
我创建了一个安装后脚本,该脚本从Firebase容器中删除了-l“ sqlite3”其他链接器标记,这很有帮助!
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
xcconfig_path = config.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path)
new_xcconfig = xcconfig.gsub('-l"sqlite3"', '')
File.open(xcconfig_path, "w") { |file| file << new_xcconfig }
end
end
end