Tha*_*101 4 android adb adb-shell
我将我的 android 设备连接到 PC 并通过 adb 连接。我想要做的是将文件从我的 PC 复制到我的应用程序 ( /data/data/com.example.app/databases)的内部存储中,而无需 root 或su. 我首先将文件从我的 PC 推送到/sdcard/我的 android 设备的文件夹中。
adb push database.sqlite /sdcard/
Run Code Online (Sandbox Code Playgroud)
然后我想将该文件复制到我的应用程序的内部存储中。我可以成功地作为我的应用程序包运行并查看内部存储。
adb shell
$ run-as com.example.app
$ ls databases
Run Code Online (Sandbox Code Playgroud)
这不会导致权限问题。/sdcard/如果我不使用run-as 没有问题,我也可以查看文件夹
adb shell
$ ls sdcard
Run Code Online (Sandbox Code Playgroud)
问题是,当我第一次使用时,run-as我无法访问 /sdcard/ 文件夹,而当我不使用时,run-as我无法访问内部存储文件夹。所以,如果我执行run-as然后执行这个:
cp /sdcard/database.sqlite /data/data/com.example.app/databases/
Run Code Online (Sandbox Code Playgroud)
我收到此权限被拒绝错误:
cp: /data/data/com.example.app/databases/database.sqlite: Permission denied
Run Code Online (Sandbox Code Playgroud)
我也试过 withh dd 但没有用:
dd if=/sdcard/database.sqlite of=/data/data/com.example.app/databases/
# output
dd: /sdcard/database.sqlite: Permission denied
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?我没有 root 访问权限,也没有超级用户 ( su)。我想我可以在没有 root 的情况下实现这一点,因为使用 android studio 设备文件资源管理器我设法在同一个 android 设备中上传了数据库。我只想使用命令行(Windows)来做到这一点。
任何帮助将不胜感激:D
我的建议是在将数据库文件复制到应用程序的私有区域时使用不同的方法。
特别是,您可以将文件复制到/data/local/tmp:
adb push database.sqlite /data/local/tmp
Run Code Online (Sandbox Code Playgroud)
然后将 db 文件复制/移动到应用程序的databases文件夹中:
adb shell run-as com.example.app cp /data/local/tmp/database.sqlite databases
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
5743 次 |
| 最近记录: |