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

问题描述 投票:0回答:3

以下命令是拉取文件:

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

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

android database macos terminal adb
3个回答
1
投票

没有简单的命令来上传文件。 Android Studio 使用设备文件资源管理器上传文件时执行的操作是:

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

我通过使用 Wireshark 捕获 TCP 端口 5027 上的 adb 流量发现了这一点。一个有趣的细节是,使用 adb shell 命令执行的每个命令都使用以下形式

<command-to-be executed in adb shell> || echo ERR-ERR-ERR-ERR


0
投票

使用此命令

adb 推送

亚行拉


0
投票

从罗伯特的回答来看,我现在可以这样做:

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

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

dbpull myapp mydata

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

希望这对大家有用。

© www.soinside.com 2019 - 2024. All rights reserved.