问题标签 [sqlcipher-android]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
47 浏览

database-design - MvvmCross.Platform.Exceptions.MvxException :: Xamarin.Social.Accounts(权限被拒绝)-SQLCipher

我在 Android 应用程序上使用 SqlCipher 和 MvvmCross 时遇到了错误。

我目前面临的问题似乎是关于在我正在运行的模拟设备上本地创建数据库的权限。在花费大量时间搜索该主题后,我似乎无法找到解决方案。我将在下面列出我尝试过的事情,然后提供有关错误的更多详细信息:

  • 在 Manifest.xml 文件上添加各种权限以允许 SqlCipher 写入设备。(经过一定程度的研究,您应该只在写入设备上的 SDCard 时才需要这样做)
  • 查看访问公司 SqlCipher 帐户所需权限的任何可能性 - 这也不是问题,因为我们将必要的 dll 添加到项目中。
  • 所有对必要文件 + 包的引用似乎都在那里,并且与当前上下文保持同步。

我已经缩小了项目中问题的起点。本质上,我正在编写一个 android 应用程序,并慢慢引入我们已经设置好的业务逻辑,以启动并运行它。我们的 iOS 应用程序使用我尝试用于 Android 的相同库和数据库结构,但在 iOS 端我没有收到此错误。

这是我得到的错误:

数据/用户/0/“公司文件位置”/files/Xamarin.Social.Accounts(权限被拒绝)

当 MvvmCross 尝试解析以下代码以在本地创建数据库时,会弹出此错误:

命名空间 HiddenForSecurity.Mobile.Data.Droid { 公共类 DatabaseContextService : IDatabaseContextService { 私有 SQLiteConnection _connection = null; 私有对象 _connectionLock = new object();

}

有没有人知道为什么我会收到关于 Xamarin.Social.Account 的错误?

非常感谢 - 请询问任何必要的信息。

利亚姆

0 投票
0 回答
308 浏览

android - 如何使用 SQLcipher 打开 React Native 连接

我正在使用以下命令添加 lib 1.NPM 安装

npm install --save react-native-sqlcipher-storage

npm 错误!代码 E404 npm 错误!404 未找到:react-native-sqlcipher-storage@latest

npm 错误!可以在以下位置找到此运行的完整日志:npm ERR!C:\Users\dasaraa\AppData\Roaming\npm-cache_logs\2017-06-27T13_34_4 6_011Z-debug.log

0 投票
0 回答
96 浏览

android - 如何写入或选择加密数据库中已经存在的表(通过 SQLCipher、Android SQLite)?

我尝试写入加密(SQLCipher)数据库中的现有表,但我收到错误消息“net.sqlcipher.database.SQLiteException:没有这样的表”。我该怎么做?

我已经通过 SQLite studio 在我的项目的 assets 文件夹中创建了一个 SQLCipher 数据库和表。然后我尝试写入表格。

每次应用程序启动时都会更新创建的表?

DatabaseHelper 类中的方法:

//和我的活动

0 投票
1 回答
1271 浏览

android - 当只有堆栈跟踪可用时如何调试 Android 崩溃

我有一个偶尔崩溃的应用程序,我正在尝试调试原因。我已将调试信息添加到 logcat 中,其中包含对发生崩溃的库的所有调用,但不幸的是,上次发生崩溃时它发生在现场,当我拿到设备时,我可以查看 logcat唯一仍然存在的是堆栈跟踪。

我很难说出我的代码中发生崩溃的位置,并且正在寻找一些关于将堆栈跟踪号转换为(例如)我的代码中的行号的提示。

崩溃显然发生在“JavaBridge”中,前 17 帧(0-16)发生在我链接到的共享对象库“libsqlcipher.so”中。前 16 帧中的每一帧都只有一个地址,例如“#00 pc 0000000000088cf0”,但第 17 帧的名称是“_ZN9sqlcipher7compileEP7_JNIEnvP8_jobjectP7sqlite3P8_jstring+184”,我将其解释为该源文件中的“编译”函数,尽管我不是确定哪条线。第18帧是另一个地址,引用了我的项目目录下的“oat/arm64/base.odex”。我不确定为什么堆栈跟踪在这里结束,因为 compile() 不是由我的应用程序直接调用的。

这是完整的堆栈跟踪:

显然,共享对象库中的帧不会有行号,但是如何从给定的地址中找到我自己的代码中发生崩溃的行?

更新:我用代码将每次调用都打包到 sqlcipher 库中,以便在调用继续之前记录有关对 SD 卡的调用的详细信息。几天后,下一次崩溃发生了,我很快发现......当崩溃发生时,这些呼叫都没有处于活动状态(超过 2 秒!)。

我还尝试在 Android Studio 中调试应用程序,试图了解上述数字对应的内容,但是...... Android Studio 没有列出每个堆栈帧的 PC,它甚至不会进入上面的本机代码与“强制步入”。

0 投票
0 回答
129 浏览

android - 无法运行 IOCipher 示例项目

我正在尝试在https://github.com/guardianproject/IOCipherExample上运行 IOCipher 示例,但是当我运行它时我会强制关闭。我什至不能运行一行 vfs = VirtualFileSystem.get(); 我通过在 build.gradle(Module:app) 文件中写入这一行“compile 'info.guardianproject.iocipher:IOCipherStandalone:0.4'”来安装它的库并构建项目。我真的不知道是什么问题。:(

这是 logcat 输出:

0 投票
3 回答
35 浏览

android - 我的函数总是返回 false SqlCipher

我使用数据库来加密/解密 sqlcipher。现在我编写函数来检查这张卡是否存在于表卡中。当我调试我的方法时,总是返回 false。

0 投票
0 回答
244 浏览

android - 将数据库问题从 SqliteDatabase 迁移到密码 Sqlite

File is encrypted or is not a database在尝试执行查询时遇到了这个问题:select count(*) from sqlite_master;将数据库从迁移android.database.sqlite.SQLiteDatabasenet.sqlcipher.database.SQLiteDatabase.

我没有在扩展 SQLiteOpenHelper 的 DBhelpher 中做任何事情。

任何人都可以建议我应该怎么做才能将 Android 本机 db 升级到 sqlcipher db?

0 投票
0 回答
211 浏览

android - SQLCipher在插入中抛出异常

我的代码中有一个异常。

这在数千个成功的插入和选择中只发生过一次(到目前为止),所以我怀疑同一进程中的不同线程之间存在某种竞争条件,试图访问同一个数据库。

实际代码并不重要,这只是一个简单的新记录插入,on conflict 参数表示忽略任何冲突:

从架构上讲,我的服务中有一个单例对象,它封装了一个与数据库的连续打开的连接,前面有一个缓存。多个线程从服务中的不同位置调用对象以插入数据,这些通常是侦听器,它们正在记录诸如 GPS 位置、电池状态等内容。读取通常来自缓存并且不会命中数据库。

我的第一个想法是,也许我需要同步数据库访问流所通过的类(闻起来像是两个不同的线程可能几乎同时尝试插入,实际上这种情况很少发生),但这个答案似乎是说我应该可以毫无问题地做到这一点。“从多个线程中插入、更新、删除和读取通常都可以”值得注意的是,异常表示“I/O 错误”而不是“数据库锁定”。

更新:我在每个数据库访问中添加了 logcat 跟踪和异常捕获。在那之后,我又遇到了两个例外。在这两种情况下,只有一个数据库访问正在进行。两者都是简单的插入。第一个在插入开始后 1.2 秒抛出异常,这看起来高得令人难以置信。第二个只用了 38 毫秒,这看起来是平均水平。

问题不在于存储空间不足:我有 27GB 可用空间。我也很难相信这也是闪存的问题,因为我没有看到写入它的任何其他错误。对于使用相同 SQLCipher 库但在每次插入后关闭数据库的旧应用程序,我也没有看到任何类似的问题。

更新 2:在异常处理程序中,我添加了代码以立即重试插入,到目前为止,我还没有收到第二个异常:

0 投票
2 回答
352 浏览

android - SQLCipher Android 不会引发密码错误的异常

我正在使用 SQLCipher v3.5.7 并观察到来自 SQLiteDatabase 的意外行为,密码不正确。

  1. 我用“key1”加密了数据库。
  2. 关闭数据库连接。
  3. 然后我尝试用“key2”打开我的数据库,SQLiteDatabase 没有抛出异常。相反,它将旧密码 (key1) 更新为新密码 (key2)。我通过在 SQLiteBrowser 中打开 .db 文件来验证这一点。

有人可以帮我为什么它会这样吗?

0 投票
1 回答
528 浏览

android - Dexguard 发布版本缺少 .so 文件

我将 Dexguard 用于我的发布版本,但我得到了这个异常:

我使用包含本机代码的 Card.IO 和 SQLCipher。在我将 Card.IO 库添加到我的项目后,我得到了这个异常。如果我只是单击 android studio 中的播放按钮,一切都很好,但在发布版本中,我的应用程序不起作用。

你能帮我解决我的问题吗?