Android アプリで (calabash-android を使用して) 自動テストをいくつか実行していますが、ユーザー データではなく、アプリのキャッシュのクリアをプログラムでトリガーする必要があります。
adb shell pm clear
ユーザーデータ(ログインの詳細を含む)が消去されるため、このソリューションは適切ではないことがわかりました。
アプリの外部でこれを達成する方法はありますか (つまり、コードを変更せずに)?
フォルダーを調べていたところ、キャッシュをクリアしたいアプリのキャッシュされたファイルが含まれて/data/data/<app's package>
いるフォルダーが見つかりました。cache
その後adb shell
、コンテンツを削除したところ、アプリのキャッシュがリセットされました。
ほとんどの場合、アプリのキャッシュのみadb shell su -c "rm -rf /data/data/<app's package>/cache/*"
を削除するために実行できます(アプリには、この影響を受けないカスタム キャッシュが含まれている場合があります)。それは私のために働いた。
編集: もちろん、デバイスの adbはルート アクセス権を持つように設定する必要があります(Cyanogen では有効にすることができます)。
編集: @running-codebase がコメントで指摘したように、アプリケーションがデバッグ キーを使用してコンパイルされている場合run-as
、adb のシェルでコマンドを使用することもできます。したがって、次のようになります。adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/*
このメソッドはroot を必要としません。