gpt4 book ai didi

android - 如何提取我的 Android (Lollipop) 应用程序的预填充 SQLite 数据库?

转载 作者:搜寻专家 更新时间:2023-10-30 20:50:32 24 4
gpt4 key购买 nike

我想提取我的 Android 数据库以便检查它,但我不知道如何提取。我知道两种常用方法(例如,adb pull 和复制到 SD 卡)。我以前用过“复制到SD卡”的方法成功过,但是现在这两种方法都不适合我。

我说“现在”是因为我使用 this 将我的应用程序版本切换到预填充的数据库 方法。

当我使用 adb shellcd/data/data/com.myapp/databases/ 时,这是我看到的我运行 ls -l:

drwxrwx--x    u0_a106    u0_a106    2017-07-19 11:03    cache
drwxrwx--x u0_a106 u0_a106 2017-07-19 11:03 databases
lrwxrwxrwx install install 2017-07-19 11:03 lib -> /data/app-lib/com.myapp
drwxrwx--x u0_a106 u0_a106 2017-07-19 11:03 shared_prefs

请注意,尽管我在正确的“数据库”子目录中,但在其下还有另一个“数据库”目录。

现在,当我执行这个命令时:

run-as com.myapp ls -l databases

我看到了这个:

-rw-rw----    u0_a106    u0_a106    21504    2017-07-19 15:53    MYDB
-rw------- u0_a106 u0_a106 8720 2017-07-19 15:53 MYDB-journal

我的数据库在那个(更深一层)“数据库”目录中。我尝试使用 adb pull 命令,但 Android 告诉我 /data/data/com.myapplicaiton/databases/MYDB 不存在

所以,我尝试了下一个级别,但我仍然得到 /data/data/com.myapplicaiton/databases/databases/MYDB does not exist

然后我尝试使用“复制到SD卡”的方法。我得到一个数据库,但它的大小为 0 字节。

很奇怪,因为我可以明显地看到数据库存在并且它的大小大于 0 字节。

那么...发生了什么,我怎样才能得到我的数据库?

谢谢。


编辑:

根据请求,我添加了用于提取数据库的代码:

adb shell run-as com.myapplication cat /data/data/com.myapplication/databases/MYDB > /mnt/ext_sdcard/MYDB.db

我也试过:

adb shell run-as com.myapplication cat /data/data/com.myapplication/databases/databases/MYDB > /mnt/ext_sdcard/MYDB.db

然后我使用 adb pull/mnt/ext_sdcard/MYDB.db 从平板电脑中检索它。

最佳答案

您可以使用命令获取驻留在可调试应用程序的 /data/data/package_name 文件夹中的任何文件

adb exec-out run-as package_name cat remote_file > local_file

在你的情况下它看起来像这样

adb exec-out run-as com.myapp cat 数据库/MYDB > target_file

关于android - 如何提取我的 Android (Lollipop) 应用程序的预填充 SQLite 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45218631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com