アプリからデータベースをプルし、変更されたバージョンをデバイスにプッシュするプロセスを自動化しようとしていますが、期待どおりに動作しません。
このトピックに関する Pilot_51 の回答に従って、ルートなしでアプリケーション データベースへの Android ADB アクセスを実行し、コマンドを手動で実行してデータベースを抽出することができました。しかし、それらを .bat ファイルに入れると、実行されたすべての Unix コマンドが「見つかりません」という種類のエラーを返します。
エラーは次のとおりです。
run-as: 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が認識されないのはなぜですか?