如何使用 adb 命令将文件从计算机推送到 /data/.../databases/?

How to push a file from computer to /data/.../databases/ using adb command?

以下命令是拉取文件:

adb -d shell "run-as com.myapp cat /data/data/com.myapp/databases/file.db" > file.db

但是如何像 Android Studio 通过设备文件资源管理器那样将其推回?

使用这个命令

adb 推送

亚行拉动

没有用于上传文件的简单命令。 Android Studio 在使用设备文件资源管理器上传文件时所做的是:

  1. 通过adb push上传文件到/data/local/tmp/<random file name>
  2. 执行adb shell run-as com.myapp sh -c 'cp /data/local/tmp/<random file name> /data/data/com.myapp/<path>/<final file-name>'
  3. 通过adb shell rm /data/local/tmp/<random file name>
  4. 删除临时文件
  5. 使用 adb shell run-as com.myapp sh -c 'ls -al /data/data/com.myapp/<path>/'
  6. 获取设备文件资源管理器的更新视图

我通过使用 Wireshark 捕获 TCP 端口 5027 上的 adb 流量发现了这一点。一个有趣的细节是,使用 adb shell 命令执行的每个命令都使用 <command-to-be executed in adb shell> || echo ERR-ERR-ERR-ERR

的形式

根据罗伯特的回答,现在我可以这样做:

function dbpull() {
    adb shell run-as "com..debug" cat "/data/data/com..debug/databases/.db" > "/Users/username/Desktop/.db"
}
function dbpush() {
    adb push "/Users/username/Desktop/.db" "/sdcard/db/tmp/"
}
function dbpush2() {
    adb shell run-as "com..debug" cp "/sdcard/db/tmp/.db" "/data/data/com..debug/databases/.db"
}
function dbcheck() {
    adb shell run-as "com..debug" ls -al "/data/data/com..debug/databases/"
}

只需在 .bash_profile 中编写以上代码行,然后在终端中调用它。

dbpull myapp mydata

目前我更喜欢使用 Visual Studio 代码而不是 Android Studio 来开发我的 Android 应用程序。所以,我需要更多地了解终端中的命令,例如亚行,gradle,等等

希望对大家有用