我试图下载我的sqlite数据库,以便我可以查看它的内容(我们的应用程序进行在线离线同步,我试图确保它只从API 中删除它应该的内容。
我试图使用adb pull /data/data/com.mycompany.myapp/files/db.sqlite3
,但我一直拒绝接受许可。
我尝试通过shell登录并将其复制到SD卡,但我也得到了许可(我不想在我的Manifest中添加SDCard访问权限)。
$ adb shell
$ run-as com.mycompany.myapp
$ cd files
$ cp db.sqlite3 /mnt/sdcard/db.sqlite3
$ PERMISSION DENIED
没有ROOT权限,如何从我的Android设备下载我的sqlite文件到一个允许我访问的位置?
答案 0 :(得分:3)
下载(如你所见)非常棘手,但并非不可能。
以下是获取文件并将其移至本地计算机的步骤 注意:我在Windows上,但只要您知道本地路径,就可以在其他设备上完成。
$ adb shell // enter into shell
$ run-as [com.mycompany.myapp] // log in as your app
$ cd [files] // navigate to the path of the file you need access to.
$ chmod 0644 [db.sqlite3] // DANGEROUS: change the permissions of said file allow you access via adb pull
$ {ctrc} + {c} // Exit Shell
$ adb pull [/data/data/com.mycompany.myapp/files/db.sqlite3] [c:\db.sqlite3] // pull the file to your local machine.
从那里,您可以导航到输出目录并访问该文件。
注意:<方形括号中的任何内容都是一个变量,您将使用自己的变量填充。
注意:{ctrl} + {c}
在Windows上的PowerShell中,其他平台可能不同。
我还创建了一个简单的Powershell脚本,可以自动执行此操作。
$appName = 'com.mycompany.myapp'
$dbName = 'db'
adb shell "run-as $appName chmod 644 /data/data/$appName/files/$dbName"
adb pull "/data/data/$appName/files/$dbName" "./$dbName.sqlite3"
Invoke-Item ".\$dbName.sqlite3"