我正在尝试自动化从我的应用程序中提取数据库然后将更改后的版本推回到设备的过程,但它没有按预期工作。
按照Pilot_51对此主题的回答Android ADB access to application databases without root,我能够提取手动运行命令的数据库。但是当我把它们放在.bat文件上时,每个执行的Unix命令都会返回一个“未找到”的错误。
这是我得到的错误:
run-as:exec因chmod 666 ./database/mydatabase.db而失败;退出错误:没有此类文件或目录
这是.bat脚本代码:
@echo off
:Ask
echo (A) Pull or (B) Push
set INPUT=
set /P INPUT=Input choice: %=%
If /I "%INPUT%"=="a" goto A
If /I "%INPUT%"=="b" goto B
echo Wrong choice & goto Ask
:A
adb shell "run-as com.example.myapp 'chmod 666 ./databases/mydatabase.db; exit'; exit"
adb pull /data/data/com.example.myapp/databases/mydatabase.db C:/
goto End
:B
adb push C:/mydatabase.db /data/data/com.example.myapp/databases/mydatabase.db
adb shell "run-as com.example.myapp 'chmod 660 ./databases/mydatabase.db; exit'; exit"
:End
pause
如果我尝试仅使用“run-as com.example.myapp'ls'”运行 adb shell ,它会显示文件夹。为什么 ls 有效,但 chmod 无法识别?
答案 0 :(得分:6)
您既不需要单引号也不需要退出命令。只是做:
adb shell "run-as com.example.myapp chmod 666 databases/mydatabase.db"