adb 在没有 root 权限的情况下将文件从 /sdcard/ 复制到 /data/data/package
adb copy file from /sdcard/ to /data/data/package without root permission
我将我的 android 设备连接到 PC 并通过 adb 连接。我想要做的是在没有 root 或 su
的情况下将文件从我的 PC 复制到我的应用程序 (/data/data/com.example.app/databases
) 的内部存储。我首先将文件从我的 PC 推送到我的 android 设备的 /sdcard/
文件夹。
adb push database.sqlite /sdcard/
然后我想将该文件复制到我的应用程序的内部存储中。我可以成功 运行-作为我的应用程序包并查看内部存储。
adb shell
$ run-as com.example.app
$ ls databases
这不会导致权限问题。我也可以查看 /sdcard/
文件夹,如果我不使用 run-as
没有问题
adb shell
$ ls sdcard
问题是,当我第一次使用 run-as
时,我无法访问 /sdcard/ 文件夹,当我不使用 run-as
时,我无法访问内部存储文件夹。所以,如果我执行 run-as
然后执行这个:
cp /sdcard/database.sqlite /data/data/com.example.app/databases/
我收到此权限被拒绝的错误:
cp: /data/data/com.example.app/databases/database.sqlite: Permission denied
我也试过 h dd 但没有用:
dd if=/sdcard/database.sqlite of=/data/data/com.example.app/databases/
# output
dd: /sdcard/database.sqlite: Permission denied
我该如何解决这个问题?我没有 root 访问权限,也没有超级用户 (su
)。我想我可以在没有 root 的情况下实现这一点,因为使用 android studio 设备文件资源管理器我设法在同一个 android 设备中上传了数据库。我只想使用命令行 (Windows) 执行此操作。
任何帮助将不胜感激:D
我的建议是在将数据库文件复制到应用程序的私有区域时使用不同的方法。
特别是,您可以通过以下方式将文件复制到 /data/local/tmp
:
adb push database.sqlite /data/local/tmp
然后 copy/move 将 db 文件放入应用程序的 databases
文件夹中:
adb shell run-as com.example.app cp /data/local/tmp/database.sqlite databases
希望对您有所帮助。
这是我的解决方案,类似于 Lino 的答案
adb shell rm -rf /sdcard/[CLONE_FODER]/
adb push ./[YOUR_FOLDER]/[YOUR_FILE] /sdcard/CLONE_FODER/.
adb shell run-as com.android.example cp -r /sdcard/CLONE_FODER/YOUR_FILE /data/data/com.android.example/databases
我将我的 android 设备连接到 PC 并通过 adb 连接。我想要做的是在没有 root 或 su
的情况下将文件从我的 PC 复制到我的应用程序 (/data/data/com.example.app/databases
) 的内部存储。我首先将文件从我的 PC 推送到我的 android 设备的 /sdcard/
文件夹。
adb push database.sqlite /sdcard/
然后我想将该文件复制到我的应用程序的内部存储中。我可以成功 运行-作为我的应用程序包并查看内部存储。
adb shell
$ run-as com.example.app
$ ls databases
这不会导致权限问题。我也可以查看 /sdcard/
文件夹,如果我不使用 run-as
没有问题
adb shell
$ ls sdcard
问题是,当我第一次使用 run-as
时,我无法访问 /sdcard/ 文件夹,当我不使用 run-as
时,我无法访问内部存储文件夹。所以,如果我执行 run-as
然后执行这个:
cp /sdcard/database.sqlite /data/data/com.example.app/databases/
我收到此权限被拒绝的错误:
cp: /data/data/com.example.app/databases/database.sqlite: Permission denied
我也试过 h dd 但没有用:
dd if=/sdcard/database.sqlite of=/data/data/com.example.app/databases/
# output
dd: /sdcard/database.sqlite: Permission denied
我该如何解决这个问题?我没有 root 访问权限,也没有超级用户 (su
)。我想我可以在没有 root 的情况下实现这一点,因为使用 android studio 设备文件资源管理器我设法在同一个 android 设备中上传了数据库。我只想使用命令行 (Windows) 执行此操作。
任何帮助将不胜感激:D
我的建议是在将数据库文件复制到应用程序的私有区域时使用不同的方法。
特别是,您可以通过以下方式将文件复制到 /data/local/tmp
:
adb push database.sqlite /data/local/tmp
然后 copy/move 将 db 文件放入应用程序的 databases
文件夹中:
adb shell run-as com.example.app cp /data/local/tmp/database.sqlite databases
希望对您有所帮助。
这是我的解决方案,类似于 Lino 的答案
adb shell rm -rf /sdcard/[CLONE_FODER]/
adb push ./[YOUR_FOLDER]/[YOUR_FILE] /sdcard/CLONE_FODER/.
adb shell run-as com.android.example cp -r /sdcard/CLONE_FODER/YOUR_FILE /data/data/com.android.example/databases