【问题标题】:Android adb push to location in device with no sdcard and no root accessAndroid adb 推送到没有 sdcard 且没有 root 访问权限的设备中的位置
【发布时间】:2024-01-02 08:06:01
【问题描述】:

如果设备没有 SD 卡并且我们没有 root 访问权限,Android 设备上是否有任何位置可以推送文件(使用 adb)?

(我正在尝试将属性文件推送到设备上,因此我还需要能够从设备上运行的活动中的该位置读取)

【问题讨论】:

    标签: android adb


    【解决方案1】:

    每个设备都有不同的能力。在某些手机上,例如三星 Galaxy S Vibrant,/sdcard/ 挂载可由通过 adb 连接的任何主机写入。在其他设备上,例如 MyTouch 4G,“adb push”根本无法将任何文件发送到任何目的地。

    如果您只使用一个或两个设备进行测试,请打开adb shell 并发出dfls -l 等命令,分别查看有哪些挂载点和文件权限。

    如果您的用户可以在 Android 设备上执行 find,那将是一个真正的福音,您可能可以使用它来定位当前有效 uid 可写(或所有人都可写)的文件。

    一些要尝试的目录:

    /SD卡 /数据 /tmp /选择

    您可能已经看过adb page,但我将其链接以防万一。

    示例df 输出:

    $df /dev:总共 318068K,已使用 64K,可用 318004K(块大小 4096) /system:总共 558668K,已使用 468920K,可用 89748K(块大小 4096) /data:总共 1190256K,已使用 129868K,可用 1060388K(块大小 4096) /cache:总共 294628K,已使用 16720K,可用 277908K(块大小 4096) /devlog:总共 21100K,已使用 6056K,可用 15044K(块大小 4096) /mnt/asec:总共 318068K,使用 0K,可用 318068K(块大小 4096) /mnt/obb:总共 318068K,使用 0K,可用 318068K(块大小 4096) /app-cache:总共 8192K,使用 0K,可用 8192K(块大小 4096)

    【讨论】:

      【解决方案2】:

      /data/local 通常可由 shell 用户(运行 adb shell 的用户)读写。所以你应该能够将文件 adb 推送到 /data/local。

      为了让应用程序能够访问它,您还必须适当地设置文件的权限

      adb push prefs.txt /data/local
      adb shell chmod 664 /data/local/prefs.txt
      

      另一种方法是让您的应用程序在设备上的应用程序数据目录下创建一个新目录,并将该目录的权限设置为全球可读/可写,这应该允许您将 adb 推送到那里。

      【讨论】:

        【解决方案3】:

        ADB 推送似乎与 '/data/local/tmp' 配合得很好。

        【讨论】: