web-dev-qa-db-ja.com

Android:アプリのキャッシュをクリアしてadb経由でユーザーデータを保持する方法は?

Androidアプリでいくつかの自動テストを(calabash-Androidで)実行しています。プログラムでアプリのキャッシュのクリアをトリガーする必要がありますが、ユーザーデータはトリガーしません。

adb Shell pm clearソリューションは、ユーザーデータ(ログインの詳細を含む)をクリアするため、適切ではありません。

これをアプリの外部で(つまり、コードを変更せずに)達成する方法はありますか?

16

私は/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/*このメソッドはルートを必要としません。

9
Tamás Barta