You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何访问Xamarin.Forms应用内创建的SQLite数据库文件?

解决方案

Android 7.0及以上系统对应用私有目录做了权限隔离,data/data/[你的包名] 目录默认只有应用本身有权限访问,普通adb进程没有访问权限,所以直接执行pull命令会返回0 files pulled。
adb root的作用是让adb工具获得系统最高管理员权限,只有root过的测试设备、官方debug版模拟器才能开启,普通消费级设备无法使用,日常调试不需要依赖这个功能。

方案1:使用adb run-as命令(无需改代码,推荐)

仅支持debug编译的应用,release版应用无法使用该命令,操作步骤如下:

  • 执行命令将私有目录的数据库复制到公共存储区:
adb shell "run-as [你的应用包名] cat [数据库完整相对路径] > /sdcard/exported_app.db"

提示:你可以在Xamarin代码中打印完整数据库路径确认相对路径,比如你用SpecialFolder.Personal的话,路径通常是files/[你的数据库名].db,如果用SQLite-net默认存储的话也可能在databases/[你的数据库名].db

  • 执行命令将公共存储区的数据库拉取到电脑:
adb pull /sdcard/exported_app.db C:\Users\你的用户名\Desktop\exported_app.db

方案2:使用Android Studio可视化导出(适合初学者)

不需要敲命令,可视化操作:

  • 打开Android Studio,顶部菜单选择 View > Tool Windows > Device File Explorer
  • 在工具窗口左上角选择你连接的测试设备/运行中的模拟器
  • 依次展开目录 data > data > [你的应用包名],找到你存储数据库的目录(files或者databases)
  • 右键目标数据库文件,选择 Save As,保存到电脑本地即可用SQLite Studio打开

方案3:代码复制到公共存储区(适合长期调试用)

在你的Xamarin.Forms安卓项目中添加代码,调试阶段主动把数据库复制到手机公共下载目录,直接连电脑就能看到:

  1. 首先在AndroidManifest.xml中添加存储权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<!-- 安卓13及以上如果需要访问公共下载目录可以额外添加媒体权限 -->
  1. 添加复制文件的代码,调试时调用一次即可:
// 原数据库路径
string originalDbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "你的数据库名.db");
// 目标公共下载目录路径
string publicPath = Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).AbsolutePath, "导出的数据库名.db");
// 复制文件,覆盖已有文件
File.Copy(originalDbPath, publicPath, true);

内容的提问来源于stack exchange,提问作者Bence

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 09:48:03