如何从Android设备中提取sqlite数据库,如模拟器?
答案 0 :(得分:50)
您可以使用这些命令从设备中提取数据库。通过android studio键入这些命令非常简单。请确保您已将adb的路径全局设置为您的系统。然后打开"终端"窗口从底部到android工作室,靠近" Android Monitor"。现在,您只需使用应用程序的实际程序包名称和数据库文件名更新以下命令。您将从设备中获取文件。
adb shell "run-as package.name chmod 666 /data/data/package.name/databases/file"
adb pull /data/data/package.name/databases/file .
adb shell "run-as package.name chmod 600 /data/data/package.name/databases/file"
Android 5.0+ /data/data/package.name/databases/file的命令将是:
adb shell "run-as package.name chmod 666 /data/data/package.name/databases/file"
adb exec-out run-as package.name cat databases/file > newOutFileName
adb shell "run-as package.name chmod 600 /data/data/package.name/databases/file"
答案 1 :(得分:7)
/sdk-directory/tools
adb pull /data/data/com.example.app/databases/database.db
其中com.example.app
是您的应用程序包名称,database.db
是数据库文件
如果您的设备已植根,如果没有尝试关注
答案 2 :(得分:4)
查看和管理Android应用数据库的最佳方法是使用此库https://github.com/sanathp/DatabaseManager_For_Android
它是一个单独的java活动文件,只需将java文件添加到源文件夹即可查看应用数据库中的表,更新,删除,向表中插入行。从应用程序中获取所有内容。
开发完成后,从你的src文件夹中删除java文件。
它给了我很多帮助。希望它也可以帮到你。
您可以在此处查看1分钟演示:http://youtu.be/P5vpaGoBlBY
答案 3 :(得分:4)
您可以使用Android设备监视器来提取它。 转到工具 - > Android - > Android设备监视器
答案 4 :(得分:3)
adb root
adb remount
adb pull <remote> <local>
答案 5 :(得分:2)
我知道这是一个老问题,但这是我从设备上的应用程序中提取SQLite数据库文件所做的。
adb -d shell "run-as com.dautechnology.abdimuna.smartparking cat /data/data/<myAppPackageName>/databases/<databaseFileName> > /sdcard/<databaseFileName>"
上面的命令会将文件存储到/ sdcard
您可以通过验证文件
adb shell
ls sdcard/
然后输入exit
adb pull sdcard/<databaseFileName>
mv <databseFileName> ~/Desktop
我希望这可以帮助那些人。
答案 6 :(得分:2)
您可以使用一个命令跳过所有这些中间阶段。
在你的PC shell中运行:
adb -d shell 'run-as <package_name> cat /data/data/<package_name>/databases/<db_name>' > <local_file_name>
答案 7 :(得分:2)
从版本24开始,我使用这些命令来提取数据库
adb shell
run-as package.name
cat /databases/database.db > /sdcard/database.db
exit
exit
adb pull /sdcard/database.db
第24版之前的
adb pull /data/data/package name/databases/database.db
就足够了
答案 8 :(得分:1)
如果您使用eclipse,请转到DDMS视图。从文件资源管理器选项卡 - &gt;数据 - &gt;数据 - &gt;应用程序包名称 - &gt;数据库 - &gt;数据库名称
选择数据库db文件,然后单击“拉”按钮
答案 9 :(得分:1)
在应用程序中以编程方式执行
try {
File file = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (file.canWrite()) {
String currentPath = "/data/data/" + getPackageName() + "/databases/yourdbname";
String copyPath = "copydb_name.db";
File currentDB = new File(currentPath);
File backupDB = new File(file, copyPath);
if (currentDB.exists()) {
FileChannel src = new FileInputStream(currentDB).getChannel();
FileChannel dst = new FileOutputStream(backupDB).getChannel();
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
}
} catch (Exception e) {
}
确保获得许可
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>