【问题标题】:How to open database sqlite file on iPhone real device?如何在 iPhone 真机上打开数据库 sqlite 文件?
【发布时间】:2018-11-22 11:50:17
【问题描述】:

我正在通过电缆在我的真实设备中调试应用程序。我有一部 iPhone 6。我想检查我的数据库并使用 sqlite3 来查询我的结果。其他问题和教程解释了仅在模拟器中执行此操作,但我使用的是真正的 iPhone。

在 AppDelegate 中,我打印了数据库的路径:

print(NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).last! as String) /Users/myname/Library/Developer/CoreSimulator/Devices/DAE93E57-7004-45F6-9B93-E79CA1AEEEFA/data/Containers/Data/Application/D7A4F27E-6F11-4941-A1B0-0337ABF788AB/Documents

所以,我从终端获取路径和访问,并使用 sqlite3 DatabaseFile 访问我的数据库

但是当我在我的设备中调试时,打印的路径不起作用。我尝试使用打印的路径 cd /var/mobile/Containers/Data/Application/3257D423-C198-41A5-B29D-B31E99F84F34/Documents /usr/bin/CD: line 4: cd: /var/mobile/Containers/Data/Application/3257D423-C198-41A5-B29D-B31E99F84F34/Documents: No such file or directory

这个错误的发生是因为这是iOS系统,我想。

【问题讨论】:

  • 在真实设备和模拟器上执行此操作没有区别。更新您的问题并解释您实际在做什么以及您实际遇到的问题。
  • 我已经用详细信息编辑了我的问题
  • 您是否尝试使用 sqlite3 命令行工具来检查数据库文件?您需要在问题中明确说明。
  • 我这样做了,但我的问题是如何在真实设备中做到这一点?不在模拟器中。

标签: ios swift xcode sqlite


【解决方案1】:

Xcode 10.1

在 Xcode 中,转到窗口 > 设备和模拟器

在设备选项卡中,选择您的应用程序,然后单击齿轮图标,然后单击下载容器...

选择您要保存文件的位置,然后点击保存。

进入Finder,找到刚刚下载的.xcappdata文件,然后右键选择Show Package in Contents

内容文件夹将打开。您的 .sql 文件位于 AppData > Library > Application Support

我建议下载 DB Browser for SQL File,然后用它打开 .sql 文件。效果很好!

【讨论】:

  • app修改后必须重新下载sqlite文件吗?
【解决方案2】:

在最新版本的 Xcode(我认为是 8 及更高版本)中,使用 Window 菜单 --> Devices 打开它。在设备列表中找到该设备并查看该设备的已安装应用程序列表。将列出您在设备上构建和安装的每个应用程序(可能还有一些其他应用程序)。选择您的应用并单击列表下方的齿轮菜单。单击弹出菜单上的“下载”项,您可以将应用程序的文档、库和其他目录复制到您的 Mac。

注意:这将下载一个 .xcappdata 文件。右键单击它并选择“显示包内容”将允许您深入到实际的 sqlite 文件。

【讨论】:

    【解决方案3】:

    这是另一种方式:

    在调试模式下,添加一个 UIActivityViewController 将您的 SQLite 数据库共享(复制)到 Mac 或 SQLiteFlow(iOS) 等第三方 iOS 应用程序,然后您就可以调试您的 SQLite 数据库了。

    【讨论】:

      【解决方案4】:

      您直接放在 Documents 中的文件应显示在 iTunes 内的File Sharing 中。您可以在本地下载它们并在那里进行编辑。您需要在应用的 Info.plist 中添加以下内容来启用它:

      <key>UIFileSharingEnabled</key>
      <true/>
      <key>LSSupportsOpeningDocumentsInPlace</key>
      <true/>
      

      第二个键实际上只有在您希望在Files app 中显示这些时才需要。

      【讨论】:

      • 不要对生产应用执行此操作,因为用户可以删除或重命名文件。
      【解决方案5】:

      当您使用设备调试应用程序时,您无法实时访问 .sqlite 文件。尝试在模拟器中完成相同的操作,它会起作用。

      【讨论】:

      • 这不是真的。 Xcode 允许您下载正在开发的应用程序的沙箱。然后您可以访问该文件的副本。它不像您进入模拟器那样实时,但可以访问。
      • 这就是我的意思,你不能实时调试它。我会编辑我的答案谢谢!
      • 那么,我如何复制这个文件@rmaddy?和访问?你有我的答案吗?
      • @Augusto 查看 Praveen Gowlikar 的答案。
      猜你喜欢
      • 2011-06-10
      • 2011-06-06
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      相关资源
      最近更新 更多