2013-09-03 1 views
10

Я запускаю некоторые автоматические тесты (с calabash-android) в приложении для Android, и мне нужно программно запускать кеш приложения, но не пользовательские данные.Android: как очистить кэш приложений и сохранить данные пользователя через adb?

Я нашел, что решение adb shell pm clear не подходит, так как оно очищает пользовательские данные (включая данные для входа).

Есть ли способ достичь этого извне в приложении (т. Е. Без изменений кода)?

ответ

7

Я изучал папку /data/data/<app's package> и нашел в ней папку cache, в которой хранились файлы в кэше для приложения, которые я хотел очистить. Затем из adb shell я удалил содержимое, и кэш приложения был сброшен.

Скорее всего, вы можете запустить adb shell su -c "rm -rf /data/data/<app's package>/cache/*" удалить кэш только для приложения (приложение может иметь некоторые пользовательские кэширование, которое не влияет на это). Это сработало для меня.

Редактировать: Конечно, ADB вашего устройства должны быть установлены, чтобы иметь доступ корневой (в Cyanogen, вы можете включить его).

Edit: @ обкатка кодовая отметил в комментариях, что если ваше приложение компилируется с ключом отладки, вы можете также использовать run-as команду в оболочке АБД. Таким образом, это будет выглядеть так: adb shell run-as <app's package> rm -rf /data/data/<app's package>/cache/* Этот метод делает не требует root.

+1

Вы можете сделать adb shell run-as <пакет приложения> и удалить файлы без root, если вы создали приложение с помощью отладочного ключа. –

+1

Спасибо, я обнаружил это с тех пор, но я забыл обновить этот ответ. Я скоро добавлю. –

Смежные вопросы