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がコメントで指摘されました。アプリケーションがデバッグキーを使用してコンパイルされている場合は、adbのシェルでrun-as
コマンドを使用することもできます。したがって、次のようになります。adb Shell run-as <app's package> rm -rf /data/data/<app's package>/cache/*
このメソッドはルートを必要としません。